vulcain-corejs
Version:
Vulcain micro-service framework
95 lines (93 loc) • 3.28 kB
JavaScript
;
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