如何通过Winston记录Socket.io?

时间:2013-08-09 07:46:30

标签: node.js socket.io winston

我想使用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告诉我没有固定的参数集:有一个,两个和三个参数的日志消息。也许还有更多,我不知道。

我认为拥有未定义数量的参数绝对不是一个好习惯,特别是如果这是您与外部组件的接口。

无论如何......有没有人有这方面的经验?谁能指出要注意什么?

3 个答案:

答案 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

您可以在how to setup Winston with socket.io

上提及此问题