我想使用Winston作为Socket.io的记录器。我看过this issue所说的内容:
var io = require('socket.io').listen(8080);
io.set('logger', { debug: <log function>, info: … , error: .., warn: .. })
不幸的是,没有描述log function
应该是什么样的。
有些玩游戏并查看Socket.io logger documentation告诉我没有固定的参数集:有一个,两个和三个参数的日志消息。也许还有更多,我不知道。
我认为拥有未定义数量的参数绝对不是一个好习惯,特别是如果这是您与外部组件的接口。
无论如何......有没有人有这方面的经验?谁能指出要注意什么?
答案 0 :(得分:8)
这似乎对我很好
var io = require('socket.io').listen(server, {
logger: {
debug: winston.debug,
info: winston.info,
error: winston.error,
warn: winston.warn
}
});
作为奖励,通过将记录器设置为与.listen()
相同的调用,您将捕获Socket.IO的所有日志输出。请注意,您应该只能传递winston
而不是该对象,但它对我不起作用,所以这就是我发布此解决方案的原因。
答案 1 :(得分:0)
您只需将winston实例作为记录器对象插入:
var winston = require('winston');
io.set('logger', winston);
答案 2 :(得分:0)
由于socket.io v1.0 logger参数不再有效。 他们切换到debug
上提及此问题