如何通过 Winston 登录 Socket.io?
Posted
技术标签:
【中文标题】如何通过 Winston 登录 Socket.io?【英文标题】:How do I log Socket.io through Winston? 【发布时间】:2013-08-11 02:55:15 【问题描述】:我想使用 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 告诉我没有固定的参数集:有一个、两个和三个参数的日志消息。也许还有更多,我不知道。
我认为使用未定义数量的参数绝对不是一个好习惯,尤其是当这是您与外部组件的接口时。
无论如何...有人有这方面的经验吗?谁能指出要注意什么?
【问题讨论】:
【参考方案1】:由于 socket.io v1.0 记录器参数不再起作用。 他们切换到debug
您可以参考how to setup Winston with socket.io这个问题
【讨论】:
【参考方案2】:这对我来说似乎很好用
var io = require('socket.io').listen(server,
logger:
debug: winston.debug,
info: winston.info,
error: winston.error,
warn: winston.warn
);
作为奖励,通过在与.listen()
相同的调用中设置记录器,您可以捕获来自 Socket.IO 的所有日志输出。请注意,您应该能够只传递 winston
而不是该对象,但它对我不起作用,所以这就是我发布此解决方案的原因。
【讨论】:
你如何在 express.io 中做同样的事情(express / socket.io 混合) @silkcom 我不知道,我没用过。【参考方案3】:您可以简单地将 winston 实例作为记录器对象插入:
var winston = require('winston');
io.set('logger', winston);
【讨论】:
我想我以前也这样做过,但我现在肯定不能让它工作。我想 Socket.IO 或 Winston 的更新已经破坏了这个功能?以上是关于如何通过 Winston 登录 Socket.io?的主要内容,如果未能解决你的问题,请参考以下文章