2013-08-09 9 views
10

Vorrei utilizzare Winston come logger per Socket.io. Ho visto this issue in cui si dice:Come posso registrare Socket.io tramite Winston?

var io = require('socket.io').listen(8080); 
io.set('logger', { debug: <log function>, info: … , error: .., warn: .. }) 

Purtroppo, non è descritto ciò che il log function dovrebbe essere simile.

Alcuni che giocano e uno sguardo su Socket.io logger documentation mi hanno detto che non esiste un set fisso di parametri: ci sono messaggi di registro con uno, due e tre parametri. Forse ce ne sono ancora di più, non lo so.

Penso che questa non sia una buona pratica per avere un numero indefinito di parametri, specialmente se questa è la tua interfaccia con i componenti esterni.

In ogni caso ... qualcuno ha qualche esperienza con questo? Qualcuno può indicare a cosa fare attenzione?

risposta

8

Questo sembra funzionare bene per me

var io = require('socket.io').listen(server, { 
    logger: { 
     debug: winston.debug, 
     info: winston.info, 
     error: winston.error, 
     warn: winston.warn 
    } 
}); 

Come bonus, impostando il registratore nella stessa chiamata come .listen(), si cattura tutto l'output del registro da Socket.IO. Nota che dovresti essere in grado di passare semplicemente winston invece di quell'oggetto, ma non funziona per me, ecco perché ho pubblicato questa soluzione.

+0

come faresti questa stessa cosa in express.io (l'ibrido express/socket.io) – silkcom

+0

@silkcom Non ho idea, non l'ho mai usato. – Brad

0

Si può semplicemente collegare l'istanza Winston come oggetto logger:

var winston = require('winston'); 

io.set('logger', winston); 
+0

penso che ho fatto in questo modo prima, ma non posso assolutamente farlo funzionare ora. Suppongo che ci sia stato un aggiornamento a Socket.IO o Winston che ha rotto questa funzionalità? – Brad

Problemi correlati