Ger*_*ost 5 javascript logging node.js winston
在基于 node.js /express.js 的应用程序中,winston 日志框架(版本 2.4.0)用于日志记录。这工作得很好,只是每个日志输出都附加了未定义的内容。输出的类型(字符串、对象、..)不会改变该行为。Winston 在多个 .js 文件中使用,如下所示:
const logger = require('winston')
..
logger.info(`Handled request in ${Date.now() - start}ms.`);
Run Code Online (Sandbox Code Playgroud)
上述日志语句的输出是:
info: Handled request in 667ms.undefined
Run Code Online (Sandbox Code Playgroud)
当 logger.{info|debug|..} 替换为记录到控制台的语句时,输出符合预期;只是要记录的语句与末尾连接的“未定义”。
可能是什么原因?
我不确定这是什么原因,我真的没有时间深入研究这个问题,但无论出于何种原因,温斯顿创建者提供的示例代码对我来说都不能正常工作,并在每次之后附加了这个“未定义”线。就像你的情况一样。
我在winston模块和console.js中的Console函数中快速搜索了“eol”,我打印了所有选项和eol参数。事实证明,不知何故,默认情况下没有指定 eol,因此这个“未定义”附录。事实上,我使用的任何选项都winston.configure()
没有进入控制台功能。但是,如果我们显式创建新控制台并将选项传递给它(包括 eol),它会工作得很好。
太长;博士;我建议您尝试此代码来初始化您的温斯顿日志记录并修改它以满足您的需要:
const winston = require('winston');
winston.configure({
transports: [
new winston.transports.Console({
level: 'silly',
eol: '\n',
timestamp: true,
colorize: true,
})
]
});
winston.silly('testing')
Run Code Online (Sandbox Code Playgroud)
它更像是一种解决方法,而不是真正的解决方案,但是嘿,它有效,对吧?
编辑:
如果您使用的是 Windows,您可能想尝试'\r\n'
eol。
归档时间: |
|
查看次数: |
3119 次 |
最近记录: |