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

标签 logging node.js socket.io

socket.io 似乎有一个基本合理的日志系统,用于其所有内部结构。我如何自己获取该日志记录对象,以便我可以在适当的级别生成我自己的日志消息?令我烦恼的是,我的 console.log() 消息在 socket.io 消息旁边没有时间戳、未分级且丑陋。我在 socket.io 代码中做了很多探索,但我现在对 Node 还不够了解,无法理解对象层次结构是什么样的,不知道如何获取对象我想要我的代码。

从长远来看,我可能需要一个更健壮的日志系统模块(能够记录到文件、自动轮换、在每个模块的基础上管理级别、自定义日志级别等)。 Winston看起来很合理,但我也可以让 socket.io 来使用它吗?将所有内容都放在一个地方会很好。

最佳答案

在使用 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);
}

关于logging - 我如何插入 socket.io 的内置日志系统来生成我自己的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621662/

相关文章:

javascript - 如何使用nodejs从日志文件中提取以字符为前缀和后缀的所有字符串?

javascript - 如何使用集群处理 Socket.IO 房间?

javascript - 如何在用户发送消息时停止 'is typing'功能

ios - 使用 socket.io v1.3.x 将单个用户的请求发送到一组预定义用户

events - 记录*业务*事件 - 使用日志框架?

java - 如何在 JUnit 测试中从 log4j.properties 访问属性?

java - 使用 <ant> 任务调用的构建文件会重置调用者的日志记录配置

python - INFO menuinst_win32 :__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}'

javascript - Node.js REPL 在函数声明或函数表达式后自动声明下划线?

node.js - 在 AWS Cloudwatch 中查找 lambda 函数错误的日志?