【发布时间】:2015-04-22 02:54:22
【问题描述】:
我已经实现了 Winston 来记录我的 nodejs 应用程序。 目前我正在使用 Winston 的“DailyRotateFile”传输将日志写入日志文件,并将日志数据输出到控制台。
我想添加一个额外的传输,将日志消息发送到套接字,以便我可以通过 socket.io 将它输出到我使用 Express 创建的 Web 界面。
这是我目前设置 Winston 的方式:
var logger = new winston.Logger({
transports: [
new winston.transports.DailyRotateFile({
level: 'info',
filename: './Logs/server',
datePattern: '.yyyy-MM-dd.log',
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 5,
colorize: false
}),
new winston.transports.Console({
level: 'debug',
handleExceptions: true,
json: false,
colorize: true
})
],
exitOnError: false
})
这是我目前用来发出日志消息的代码:
var logStream = logger.stream({
start: -1
})
logStream.on('log', function(log){
console.log('LOG STREAM')
//console.log(log)
io.emit('logger', log);
})
然而,当我启动服务器时,这会持续向 nodejs 控制台输出“LOG STREAM”,并且在我使用 logger.info 命令时不会发出任何内容。
编辑 所以看起来它继续输出“LOG STREAM”的原因是因为它正在发送已保存在日志文件中的所有消息,即使我设置了“start -1”
对于如何正确实现这一点的任何建议,我将不胜感激。蒂亚!
【问题讨论】: