2013-08-09 11 views
10

Chciałbym użyć Winston jako logger dla Socket.io. Widziałem this issue gdzie jest napisane:Jak zalogować Socket.io przez Winston?

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

Niestety, to nie jest opisane, co log function powinien wyglądać.

Niektóre zabawy i wygląd w Socket.io logger documentation powiedział mi, że nie ma ustalonego zestawu parametrów: Są komunikaty dziennika z jednym, dwoma i trzema parametrami. Być może jest ich jeszcze więcej, nie wiem.

Myślę, że zdecydowanie nie jest dobrą praktyką posiadanie nieokreślonej liczby parametrów, szczególnie jeśli jest to twój interfejs do zewnętrznych komponentów.

W każdym razie ... Czy ktoś ma pewne doświadczenia z tym? Czy ktoś może wskazać, na co uważać?

Odpowiedz

8

To wydaje się działać dobrze dla mnie

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

Jako bonus, poprzez ustawienie rejestratora w tym samym wywołaniu jako .listen(), przechwytujesz wszystkie dane wyjściowe dziennika z Socket.IO. Zauważ, że powinieneś móc po prostu przekazać winston zamiast tego obiektu, ale to nie działa dla mnie, dlatego właśnie opublikowałem to rozwiązanie.

+0

jak zrobiłbyś to samo w express.io (hybryda express/socket.io) – silkcom

+0

@silkcom Nie mam pojęcia, nigdy go nie używałem. – Brad

0

można po prostu podłączyć np winston jako przedmiotu Rejestrator:

var winston = require('winston'); 

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

myślę Zrobiłem to w ten sposób wcześniej, ale na pewno nie można dostać pracy teraz. Przypuszczam, że aktualizacja Socket.IO lub Winston spowodowała awarię tej funkcji? – Brad

Powiązane problemy