2013-08-09 17 views
10

Winston'u Socket.io için logger olarak kullanmak istiyorum. yazan yere ben this issue gördük:Winston üzerinden Socket.io'yu nasıl kaydederim?

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

Ne yazık ki, log function nasıl görünmesi gerektiği tarif edilmez.

Bazı oyun oynaması ve Socket.io logger documentation içine bir bakış, sabit bir parametre kümesi olmadığını söyledi: Bir, iki ve üç parametreli günlük iletileri var. Belki daha da fazlası var, bilmiyorum.

Bu özellikle, özellikle dış bileşenler için arabiriminizdeyse, tanımlanmamış sayıda parametreye sahip olmanın kesinlikle iyi bir uygulama olmadığını düşünüyorum.

Her neyse ... bununla ilgili herhangi bir deneyimi var mı? Neye dikkat edilmesi gerektiğini bilen var mı?

cevap

8

Aynı çağrısında logger ayarlayarak, bir bonus olarak bana

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

için çok iyi çalışıyor görünüyor .listen() olarak, Socket.IO'nun tüm günlük çıkışını yakalarsınız. Bu nesne yerine winston kodunu geçirebilmeniz gerektiğini unutmayın, ancak benim için çalışmıyor, bu yüzden bunun yerine bu çözümü gönderdim.

+0

bunu aynı şeyi express.io'da nasıl yaparsınız (express/socket.io hybrid) – silkcom

+0

@silkcom Hiçbir fikrim yok, hiç kullanmadım. – Brad

0

Sadece kaydedicisi nesnesi olarak Winston örneği takabilirsiniz:

var winston = require('winston'); 

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

üzerinde debug

Bu konuda anlamlara gelebilir geçti, ama kesinlikle şimdi çalışmıyor alınamıyor. Sanırım bu işlevselliği bozmuş olan Socket.IO veya Winston için bir güncelleme yapıldı mı? – Brad

İlgili konular