为什么温斯顿使用自定义格式输出"未定义"?


let logger = winston.createLogger({
format: {
transform(info, opts) {
info.message = "!" + info.message + "!";
return info;
}
},
transports: [
new winston.transports.Console()
]
});
logger.info("Something");

此代码在我的控制台中输出"未定义"。为什么?如果我使用默认格式,它可以完美运行。但是,如果我使用我自己的甚至来自官方温斯顿示例的自定义格式,它就不起作用。

也许每个版本都不同

const logger = winston.createLogger({
transports: [
new winston.transports.Console({
format: winston.format.printf(info => `!${info.message}!`)
})
]
});
正如
  1. KiDoo Song所提到的,您需要将format放入传输选项中。

  2. 为了自己构建插件,您应该使用symbol类型作为键而不是字符串:

    info[Symbol.for('message')] = `!${info.message}!`;
    

最新更新