@fabric-es/operator
Version:
Network operator
53 lines • 2.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLogger = void 0;
const moment_timezone_1 = __importDefault(require("moment-timezone"));
const winston_1 = require("winston");
const { combine, label, printf } = winston_1.format;
const logFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} [${level}]: ${message} (${label})`;
});
const appendTimestamp = winston_1.format((info, opts) => {
if (opts.tz)
info.timestamp = moment_timezone_1.default().tz(opts.tz).format();
return info;
});
const CONSOLE = 1;
const FILE = 2;
const CLOUD = 4;
const loggers = {};
const getLogger = ({ name, level, target, timezone }) => {
if (loggers[name]) {
return loggers[name];
}
else {
const logLevel = level || process.env.LOG_LEVEL || 'info';
const logTarget = (target || process.env.LOG_TARGET || 'console|file|cloud').split('|').reduce((accu, curr) => {
switch (curr) {
case 'console': return accu | CONSOLE;
case 'file': return accu | FILE;
case 'cloud': return accu | CLOUD;
default: return accu;
}
}, 0);
const logTimezone = timezone || process.env.TZ || 'Asia/Hong_Kong';
const transportArray = [];
if (logTarget & FILE) {
transportArray.push(new winston_1.transports.File({ filename: `./logs/app.log` }));
}
if (logTarget & CONSOLE)
transportArray.push(new winston_1.transports.Console());
loggers[name] = winston_1.createLogger({
level: logLevel,
exitOnError: false,
format: combine(label({ label: name }), appendTimestamp({ tz: logTimezone }), logFormat),
transports: transportArray,
});
return loggers[name];
}
};
exports.getLogger = getLogger;
//# sourceMappingURL=getLogger.js.map