2011-10-01 12 views
7

socket.io sembra avere un sistema di registrazione sostanzialmente ragionevole per tutti i suoi interni. Come ottengo io stesso quell'oggetto di registrazione in modo da poter generare i miei messaggi di registro ai livelli appropriati? Mi infastidisce il fatto che i miei messaggi console.log() non siano datati, non livellati e brutti accanto ai messaggi socket.io. Ho fatto un po 'di speleologia nel codice socket.io e non sono abbastanza esperto sul nodo a questo punto per capire come le gerarchie degli oggetti sembrano sapere come arrivare all'oggetto che voglio dal mio codice.Come faccio a collegare il sistema di registrazione incorporato di socket.io per generare i miei messaggi?

A lungo termine, probabilmente vorrai un modulo di sistema di registrazione più robusto (con la possibilità di accedere ai file, ruotare automaticamente, gestire i livelli per modulo, i livelli di registro personalizzati, ecc.). sembra ragionevole, ma posso usare anche socket.io? Sarebbe bello avere tutto in un posto.

risposta

8

Durante l'utilizzo socket.io, sono stato in grado di collegare nel modulo logger esistente in questo modo:

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 è anche molto semplice:

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

Hai esaminato l'utilizzo del middleware del logger da Connect? Sembra che qualcuno abbia già creato una libreria per quello che desideri chiamare socket.IO-connect. Io uso qualcosa di simile nel mio programma Express:

var connect = require('connect'); 

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

Questo è promettente! Domani darò un'occhiata più da vicino e vedrò se impone a socket-io di instradare i suoi messaggi di registrazione attraverso il middleware di connessione. La mia strategia di fallback è di impostare la registrazione socket su 0 e fare tutto il mio log con Winston. Perderò un accesso di basso livello, ma se ho problemi a livello di socket, ho problemi più grandi che richiedono comunque un debug più accurato. – drewww

Problemi correlati