2011-10-01 11 views
7

socket.io parece tener un sistema de registro básicamente sensato para todas sus partes internas. ¿Cómo puedo acceder a ese objeto de registro yo mismo para poder generar mis propios mensajes de registro en los niveles apropiados? Me molesta que mis mensajes console.log() no tengan marca de tiempo, no estén nivelados y sean feos junto a los mensajes socket.io. He hecho un montón de spelunking en el código socket.io y, en este momento, no soy lo suficientemente inteligente como para entender cómo se ven las jerarquías de objetos para saber cómo obtener el objeto que deseo de mi código.¿Cómo me conecto al sistema de registro integrado de socket.io para generar mis propios mensajes?

A largo plazo, probablemente voy a querer un módulo de sistema de registro más robusto (con la capacidad de iniciar sesión en archivos, rotar automáticamente, administrar niveles por módulo, niveles de registro personalizados, etc.). Winston parece sensato, pero ¿puedo obtener socket.io para usarlo también? Sería bueno tener todo en un solo lugar.

Respuesta

8

Durante el uso de socket.io, yo era capaz de conectar al módulo registrador existente, así:

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 también es muy simple:

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

¿Ha analizado el uso del middleware de registrador desde Connect? Parece que alguien ya creó una biblioteca para lo que quiere que se llame socket.IO-connect. Yo uso algo similar en mi programa Express:

var connect = require('connect'); 

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

¡Eso es prometedor! Lo echaré un vistazo más de cerca mañana y veré si obliga a socket-io a enrutar sus mensajes de registro a través del middleware de conexión. Mi estrategia alternativa es simplemente configurar el registro de socket en 0 y hacer mi propio registro con Winston. Perderé algunos accesos de bajo nivel, pero si tengo problemas en el nivel de socket tengo problemas más grandes que necesitan una depuración más fina de todos modos. – drewww

Cuestiones relacionadas