自定义记录器和Socket.io 1.x.

时间:2014-07-02 16:01:00

标签: node.js logging socket.io bunyan

Socket.io的1.0之前版本中,您似乎可以在实例化时使用 记录器 选项设置记录器,但我似乎无法找到任何可能性在1.0之后做。我是对的他们已经删除了这个选项,并且有什么好办法可以通过挂钩/监听Socket.io现在似乎使用的调试模块的错误来绕过这个,而无需修改现有模块。我想用Bunyan记录我的套接字消息。

2 个答案:

答案 0 :(得分:1)

要使用新的socket.io进行日志记录,您可以使用以下命令:

DEBUG=* // all
DEBUG=socket.io:* // all in socket.io module
DEBUG=socket.io:server // only server debugger

答案 1 :(得分:0)

经过一番研究后,我创建了一个简单的包装器:

ionic.config.json

使用它而不是传统的请求:

var wrapper = function (http, opts) {
    var logCB = function (str) {
        fs.writeFileSync("a.txt", "SOCKET.IO " + str + "\n", {flag: 'a'});
    };
    var io = require('socket.io')(http, opts);
    var ret = {
        'use': function (f) {
            io.use(f);
        },
        'sockets': {
            'on': function (evt, fn) {
                logCB("ON " + evt);
                io.sockets.on(evt, function (socket) {
                    var newSocket = Object.create(socket);
                    newSocket.on = function (ev, cb) {
                        socket.on(ev, function (data, ok) {
                            logCB("ON " + ev + " DATA " + JSON.stringify(data));
                            cb(data, ok);
                        });
                    };
                    newSocket.emit = function (ev, data) {
                        logCB("EMIT " + ev + " DATA " + JSON.stringify(data));
                        socket.emit(ev, data);
                    };
                    fn(newSocket);
                });
            }
        }
    };
    return ret;
};
如果你愿意的话,请改进它。