Nodejs Winston 发送到套接字
Nodejs Winston Emit to socket
我已经实现了 Winston 来记录我的 nodejs 应用程序。
目前我正在使用Winston的"DailyRotateFile"传输将日志写入日志文件,并将日志数据输出到控制台。
我想添加一个额外的传输,将日志消息发送到套接字,以便我可以将它输出到我使用 Express 创建的 Web 界面,通过 socket.io。
这是我目前设置 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);
})
然而,当我启动服务器时,这会持续输出 "LOG STREAM" 到 nodejs 控制台,并且当我使用 logger.info 命令时不会发出任何内容。
编辑
所以看起来它继续输出 "LOG STREAM" 的原因是因为它正在发送已保存在日志文件中的所有消息,即使我设置了 "start -1"
对于如何正确实现这一点的任何建议,我将不胜感激。 TIA!
这就是我如何成功地将 Winston 日志发送到浏览器
我添加了以下传输:
new winston.transports.Webhook({
host: '192.168.51.242',
port: 8102,
}),
然后我创建了一个 TCP 端口来接收日志消息:
http.createServer(function(req, res){
var logMsg = '';
req.on('data', function(data){
logMsg += data.toString()
})
req.on('end', function(data){
io.emit('logger', logMsg)
})
}).listen(8102)
每次我接收到端口的数据时,我都会使用 Socket.IO 将其发送到我的 Angualr 接口
我已经实现了 Winston 来记录我的 nodejs 应用程序。 目前我正在使用Winston的"DailyRotateFile"传输将日志写入日志文件,并将日志数据输出到控制台。
我想添加一个额外的传输,将日志消息发送到套接字,以便我可以将它输出到我使用 Express 创建的 Web 界面,通过 socket.io。
这是我目前设置 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);
})
然而,当我启动服务器时,这会持续输出 "LOG STREAM" 到 nodejs 控制台,并且当我使用 logger.info 命令时不会发出任何内容。
编辑 所以看起来它继续输出 "LOG STREAM" 的原因是因为它正在发送已保存在日志文件中的所有消息,即使我设置了 "start -1"
对于如何正确实现这一点的任何建议,我将不胜感激。 TIA!
这就是我如何成功地将 Winston 日志发送到浏览器
我添加了以下传输:
new winston.transports.Webhook({
host: '192.168.51.242',
port: 8102,
}),
然后我创建了一个 TCP 端口来接收日志消息:
http.createServer(function(req, res){
var logMsg = '';
req.on('data', function(data){
logMsg += data.toString()
})
req.on('end', function(data){
io.emit('logger', logMsg)
})
}).listen(8102)
每次我接收到端口的数据时,我都会使用 Socket.IO 将其发送到我的 Angualr 接口