如何插入socket.io的内置日志系统来生成我自己的消息?

时间:2011-10-01 16:59:18

标签: logging node.js socket.io

socket.io似乎对其所有内部都有一个基本合理的记录系统。我如何自己获取该日志记录对象,以便在适当的级别生成自己的日志消息?我的console.log()消息在socket.io消息旁边没有加盖时间戳,不平整且丑陋,这让我感到困惑。我已经在socket.io代码中完成了大量的探索,我对此处的节点不够精明,无法理解对象层次结构是什么样的,知道如何从我的代码中获取我想要的对象

从长远来看,我可能想要一个更强大的日志系统模块(能够记录文件,自动轮换,按模块管理级别,自定义日志级别等)。 Winston看起来很明智,但我也可以socket.io使用它吗?把所有东西放在一个地方真好。

2 个答案:

答案 0 :(得分:8)

在使用socket.io时,我能够像这样插入现有的记录器模块:

var express = require('express'),
    app     = module.exports = express.createServer(), //just creating 'app' for io
    io      = require('socket.io').listen(app),
    logger  = io.log, // access the existing logger setup in socket.io
    util    = require('util');

logger.info(util.format("Express server listening on port %d in %s mode", 8003, app.settings.env));

Configuring the logger也很简单:

io.configure('production', function(){
  io.set('log level', 1);
}

答案 1 :(得分:3)

您是否考虑过使用Connect中的记录器中间件?看起来有人已经为您想要的名称socket.IO-connect创建了一个库。我在Express程序中使用类似的东西:

var connect = require('connect');

module.exports = connect.createServer(
    connect.logger({ format: ':response-time :method :url' }),
    connect.static(__dirname + '/public)
);