2013-08-09 8 views
10

मैं विंस्टन को सॉकेट.ओओ के लिए लॉगर के रूप में उपयोग करना चाहता हूं। मैं this issue देखा है जहां यह कहते हैं:मैं Winston के माध्यम से Socket.io कैसे लॉग करूं?

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

दुर्भाग्य से, यह क्या log function की तरह दिखना चाहिए वर्णित नहीं है।

कुछ लोग खेल रहे हैं और Socket.io logger documentation में एक नज़र ने मुझे बताया कि पैरामीटर का कोई निश्चित सेट नहीं है: एक, दो और तीन पैरामीटर के साथ लॉग संदेश हैं। शायद और भी कुछ है, मुझे नहीं पता।

मुझे लगता है कि यह निश्चित रूप से पैरामीटर की एक अनिश्चित संख्या रखने के लिए एक अच्छा अभ्यास नहीं है, खासकर अगर यह बाहरी घटकों के लिए आपका इंटरफ़ेस है।

वैसे भी ... क्या किसी के पास इसका कोई अनुभव है? क्या कोई यह बता सकता है कि किसके लिए देखना है?

उत्तर

8

इस के लिए मुझे

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

ठीक काम करने के लिए एक बोनस के रूप में, एक ही कॉल में लकड़हारा की स्थापना करके लगता है .listen() के रूप में, आप सॉकेट.आईओ से सभी लॉग आउटपुट को पकड़ते हैं। ध्यान दें कि आपको उस ऑब्जेक्ट के बजाय winston पास करने में सक्षम होना चाहिए, लेकिन यह मेरे लिए काम नहीं कर रहा है, इसलिए मैंने इस समाधान को इसके बजाय पोस्ट किया है।

+0

आप express.io (एक्सप्रेस/सॉकेट.ओ हाइब्रिड) में यह वही काम कैसे करेंगे – silkcom

+0

@ सिल्कॉम मुझे नहीं पता, मैंने इसका कभी भी उपयोग नहीं किया है। – Brad

0

आप बस लकड़हारा वस्तु के रूप में विंस्टन उदाहरण में प्लग कर सकते हैं:

var winston = require('winston'); 

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

पर debug

इस समस्या का उल्लेख कर सकते करने के लिए बंद कर मुझे लगता है कि मैं इसे इस तरह से पहले किया है, लेकिन मैं निश्चित रूप से यह अब काम नहीं कर सकते। मुझे लगता है कि सॉकेट.आईओ या विंस्टन को अपडेट किया गया है जिसने इस कार्यक्षमता को तोड़ दिया है? – Brad

संबंधित मुद्दे