我正在使用自定义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,
});
答案 0 :(得分:0)
似乎我必须给每个运输一个名字。即。
logger.add(winston.transports.Console, {
name: 'trace-console',
// ...
});
logger.add(winston.transports.File, {
name: 'error-file',
// ...
});
现在它似乎按预期工作了。
编辑:出于某种原因,两者都必须将colorize
选项设置为true(?)。