Make logger more configurable

parent cae85a90
const { createLogger, format, transports } = require('winston');
function adjustLogger (logger, config) {
function adjustLogger (logger, maxLogLevel) {
logger.transports.forEach(transport => {
transport.level = config.maxLogLevel;
transport.level = maxLogLevel;
});
}
function initLogger (config) {
function getFormattedString (info, levels, timestamp) {
let result = info.message;
if (!levels && !timestamp) {
return result;
}
result = ': ' + result;
if (levels) {
result = info.level + result;
}
if (timestamp) {
result = info.timestamp + ' ' + result;
}
return result;
}
function initLogger ({
colors = true,
file = null,
levels = true,
maxLogLevel = 'info',
timestamp = true
}) {
const transforms = [
format(info => {
info.timestamp = new Date().toLocaleString();
return info;
})(),
...(colors ? [format.colorize()] : []),
format.printf(info => getFormattedString(info, levels, timestamp))
];
const transport = (typeof file === 'string') ? new transports.File({
filename: file
}) : new transports.Console();
const logger = createLogger({
format: format.combine(
format(info => {
info.timestamp = new Date().toLocaleString();
return info;
})(),
format.colorize(),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
format: format.combine(...transforms),
transports: [
new transports.Console()
transport
]
});
adjustLogger(logger, config);
adjustLogger(logger, maxLogLevel);
return logger;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment