node.js - 如何通过 Winston 登录 Socket.io?

标签 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函数应该是什么样子。

有些人在玩,看看Socket.io logger documentation告诉我没有固定的参数集:有一个、两个和三个参数的日志消息。也许还有更多,我不知道。

我认为使用未定义数量的参数绝对不是一个好习惯,尤其是当这是您与外部组件的接口(interface)时。

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

最佳答案

这对我来说似乎很好用

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

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

关于node.js - 如何通过 Winston 登录 Socket.io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142217/

相关文章:

Android socket.io 应用程序无法连接到 node.js 服务器

node.js - 如何在特定天数限制后从 winston 日志中删除文件?

event-handling - 我应该为 Pub 和 Sub 与 Redis 使用单独的连接吗?

apache - 通过 Apache 服务页面访问 socket.io 服务器

mysql - 如何在 Node.js 中使用 winston 将日志存储到 mysql 数据库中

javascript - 如何访问 Meteor 中的客户端 IP 地址?

node.js - TypeScript - 无法在其他类型根目录中的类型覆盖中导入自身,TS7016

node.js - 生产环境中的 Socket.io 和 nginx CORS

node.js - Node winston 不支持多文件传输?

node.js - 在 winston 日志条目中添加模块名称