如何通过Winston记录Socket.io?

Gol*_*den 10 node.js socket.io winston

我想使用Winston作为Socket.io的记录器.我看到这个问题说:

var io = require('socket.io').listen(8080);
io.set('logger', { debug: <log function>, info: … , error: .., warn: .. })
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有描述log function应该是什么样子.

有些玩游戏并查看Socket.io记录器文档告诉我没有固定的参数集:有一个,两个和三个参数的日志消息.也许还有更多,我不知道.

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

无论如何......有没有人有这方面的经验?任何人都可以指出要注意什么?

Bra*_*rad 8

这对我来说似乎很好

var io = require('socket.io').listen(server, {
    logger: {
        debug: winston.debug, 
        info: winston.info, 
        error: winston.error, 
        warn: winston.warn
    }
});
Run Code Online (Sandbox Code Playgroud)

作为奖励,通过在同一个调用中设置记录器.listen(),您可以捕获Socket.IO的所有日志输出.请注意,您应该只能传递winston而不是该对象,但它不适用于我,所以这就是我发布此解决方案的原因.