我会尽量简明扼要地介绍我的要求!
我正在使用babel-cli作为ES6编译器来开发NodeJS应用程序,并且我正在使用Winston 3.0作为日志记录服务。
我希望Winston记录器的消息的整个输出以彩色显示,不仅是标签和消息,还应该是时间戳。我知道,在Winston 2.x中,这在某些方面是可行的(不知道怎么做)。
我已经尝试过不同的NPM软件包,例如winston color和winston-console-formatter,但它们似乎没有用。
我对记录器的定义如下:
import winston from 'winston'
let alignColorsAndTime = winston.format.combine(
winston.format.colorize({
all:true
}),
winston.format.label({
label:'[LOGGER]'
}),
winston.format.timestamp({
format:"YY-MM-DD HH:MM:SS"
}),
winston.format.printf(
info => ` ${info.label} ${info.timestamp} ${info.level} : ${info.message}`
)
);
export const logger = winston.createLogger({
level: "debug",
transports: [
new (winston.transports.Console)({
format: alignColorsAndTime
})
],
});
仍然输出看起来像这样: Click for Image
虽然我希望它看起来像这样: Click for Image
如果您有任何关于解决此问题的想法,我将非常感激。谢谢:)
答案 0 :(得分:1)
尝试以下代码。它将结合两种格式。这个对我有用。
export const logger = winston.createLogger({
level: "debug",
transports: [
new (winston.transports.Console)({
format: winston.format.combine(winston.format.colorize(), alignColorsAndTime)
})
],
});
请注意,填充必须处理颜色。例如:
const padding= info.level.length <= 7?7:17; //padding differently if it has colour.
${info.level.padEnd(padding,' ')}
经过测试:
"winston": "^3.1.0"
答案 1 :(得分:1)
另一个想法:
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, printf } = format;
const colorizer = winston.format.colorize();
const logger = winston.createLogger({
levels: {
error: 0,
warn: 1,
info: 2,
debug: 4
},
format: combine(
winston.format.timestamp(),
winston.format.simple(),
winston.format.printf(msg =>
colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
)
),
transports: [
new (winston.transports.Console)({
// format: winston.format.combine(winston.format.colorize(), alignColorsAndTime),
prettyPrint: true,
colorize: true,
timestamp: true,
}),
],
});
答案 2 :(得分:0)
此帖子https://github.com/winstonjs/winston/issues/1388
const colorizer = winston.format.colorize();
const logger = winston.createLogger({
level: 'debug',
format: combine(
winston.format.timestamp(),
winston.format.simple(),
winston.format.printf(msg =>
colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
)
),
transports: [
new transports.Console(),
]
});
答案 3 :(得分:0)
const { createLogger, format, transports, addColors } = require('winston');
const { combine, colorize, label, timestamp, json, prettyPrint, printf } = format;
require('winston-mongodb');
let myCustomFormat = format.combine(
colorize({
all: true
}),
label({
label: '[LOGGER]'
}),
timestamp({
format: 'YY-MM-DD HH:MM:SS'
}),
printf((info) => ` ${info.label} ${info.timestamp} ${info.level} : ${info.message}`));
addColors({
info: 'bold blue',
warn: 'italic yellow',
error: 'bold red',
debug: 'green'});
const logger = createLogger({
level: 'info',
transports: [ new transports.Console({format: combine(myCustomFormat)})]
});
这对我有用,可以自定义颜色和字体样式。 文档中的可能选项如下。
Font styles: bold, dim, italic, underline, inverse, hidden, strikethrough.
Font foreground colors: black, red, green, yellow, blue, magenta, cyan, white, gray, grey.
Background colors: blackBG, redBG, greenBG, yellowBG, blueBG magentaBG, cyanBG, whiteBG