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