10

我想使用 Winston 作为 Socket.io 的记录器。我已经看到了这个问题,它说:

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

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

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

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

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

4

3 回答 3

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而不是该对象,但它对我不起作用,所以这就是我发布此解决方案的原因。

于 2013-11-03T19:55:13.913 回答
1

由于 socket.io v1.0 记录器参数不再起作用。他们切换到调试

关于如何使用 socket.io 设置 Winston,您可以参考这个问题

于 2016-07-25T14:30:32.183 回答
0

您可以简单地将 winston 实例作为记录器对象插入:

var winston = require('winston');

io.set('logger', winston);
于 2013-08-26T10:03:50.410 回答