我使用了一个自定义的winston日志记录器,根据日志级别同时写入控制台和文件(即,对控制台执行任何操作,但只对文件执行错误和警告操作)。由于某些原因,即使我调用了一个错误,在没有任何东西被写入文件的情况下,向控制台写入也是有效的。
起初,我把级别的顺序搞乱了,从trace =0一直到error = 9。虽然我已经设置好了,但winston只写到了文件,而没有写到控制台。我假设winston只写入一个传输,然后停止?
我的配置是这样的:
import winston from 'winston';
const logger = new (winston.Logger)({
levels: {
trace: 9,
input: 8,
verbose: 7,
prompt: 6,
debug: 5,
info: 4,
data: 3,
help: 2,
warn: 1,
error: 0,
},
colors: {
trace: 'magenta',
input: 'grey',
verbose: 'cyan',
prompt: 'grey',
debug: 'blue',
info: 'green',
data: 'grey',
help: 'cyan',
warn: 'yellow',
error: 'red',
},
});
logger.add(winston.transports.Console, {
level: 'trace',
prettyPrint: true,
colorize: true,
silent: false,
timestamp: false,
});
logger.add(winston.transports.File, {
prettyPrint: false,
level: 'error',
silent: false,
colorize: true,
timestamp: true,
filename: `${__dirname}/../logs/error.log`,
maxsize: 40000,
maxFiles: 10,
json: false,
});发布于 2016-06-14 16:01:33
似乎我必须给每个传送器一个名字。也就是说。
logger.add(winston.transports.Console, {
name: 'trace-console',
// ...
});
logger.add(winston.transports.File, {
name: 'error-file',
// ...
});现在,它似乎像预期的那样工作。
编辑:由于某些原因,这两个文件的colorize选项也必须设置为真(?)。
https://stackoverflow.com/questions/37794579
复制相似问题