UNPKG

vulcain-corejs

Version:
95 lines (93 loc) 3.28 kB
"use strict"; const system_1 = require("./../globals/system"); const util = require("util"); const os = require("os"); class VulcainLogger { static get enableInfo() { if (!VulcainLogger._enableInfo) VulcainLogger._enableInfo = system_1.System && system_1.System.createServiceConfigurationProperty("enableVerboseLog", false); return VulcainLogger._enableInfo.value; } constructor() { this._hostname = os.hostname(); } /** * Log an error * * @param {any} requestContext Current requestContext * @param {Error} error Error instance * @param {string} [msg] Additional message * * @memberOf VulcainLogger */ error(requestContext, error, msg) { if (!error) return; let entry = this.prepareEntry(requestContext); entry.message = msg || "Error occured"; entry.error = error.message; entry.stack = (error.stack || "").replace(/[\r\n]/g, '↵'); this.writeEntry(entry); } /** * Log a message * * @param {any} requestContext Current requestContext * @param {string} msg Message format (can include %s, %j ...) * @param {...Array<string>} params Message parameters * * @memberOf VulcainLogger */ info(requestContext, msg, ...params) { let entry = this.prepareEntry(requestContext); entry.message = util.format(msg, ...params); this.writeEntry(entry); } /** * Log a verbose message. Verbose message are enable by service configuration property : enableVerboseLog * * @param {any} requestContext Current requestContext * @param {string} msg Message format (can include %s, %j ...) * @param {...Array<string>} params Message parameters * * @memberOf VulcainLogger */ verbose(requestContext, msg, ...params) { if (VulcainLogger.enableInfo || system_1.System.isDevelopment) this.info(requestContext, msg, params); } logRequestStatus(requestContext, kind) { let entry = this.prepareEntry(requestContext); entry.kind = kind; this.writeEntry(entry); } logAction(requestContext, kind, action, message) { let entry = this.prepareEntry(requestContext); entry.kind = kind; entry.action = action; entry.message = message; this.writeEntry(entry); } prepareEntry(requestContext) { return { service: system_1.System.serviceName, version: system_1.System.serviceVersion, kind: "Log", source: this._hostname, timestamp: (requestContext && requestContext.now) || Date.now() * 1000, correlationId: (requestContext && requestContext.correlationId) || undefined, parentId: (requestContext && requestContext.parentId) || undefined, traceId: (requestContext && requestContext.traceId) || undefined }; } writeEntry(entry) { if (system_1.System.isDevelopment) { util.log(`${entry.message || JSON.stringify(entry)}`); } else { console.log("%j", entry); } } } exports.VulcainLogger = VulcainLogger; //# sourceMappingURL=vulcainLogger.js.map