Make logger more configurable

parent cae85a90
const { createLogger, format, transports } = require('winston'); const { createLogger, format, transports } = require('winston');
function adjustLogger (logger, config) { function adjustLogger (logger, maxLogLevel) {
logger.transports.forEach(transport => { logger.transports.forEach(transport => {
transport.level = config.maxLogLevel; transport.level = maxLogLevel;
}); });
} }
function initLogger (config) { function getFormattedString (info, levels, timestamp) {
const logger = createLogger({ let result = info.message;
format: format.combine( 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 => { format(info => {
info.timestamp = new Date().toLocaleString(); info.timestamp = new Date().toLocaleString();
return info; return info;
})(), })(),
format.colorize(), ...(colors ? [format.colorize()] : []),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`) 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(...transforms),
transports: [ transports: [
new transports.Console() transport
] ]
}); });
adjustLogger(logger, config);
adjustLogger(logger, maxLogLevel);
return logger; 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