2011-10-01 10 views
7

socket.io अपने सभी आंतरिकों के लिए मूल रूप से समझदार लॉगिंग सिस्टम प्रतीत होता है। मैं उस लॉगिंग ऑब्जेक्ट को अपने आप कैसे प्राप्त करूं ताकि मैं अपने स्वयं के लॉग संदेश उचित स्तर पर उत्पन्न कर सकूं? यह मुझे खराब करता है कि मेरे console.log() संदेश socket.io संदेशों के बगल में un-timestamped, un-leveled, और बदसूरत हैं। मैंने socket.io कोड में स्पेलंकिंग का एक गुच्छा किया है और मैं इस बिंदु पर नोड के बारे में पर्याप्त समझ नहीं पा रहा हूं कि यह समझने के लिए कि ऑब्जेक्ट पदानुक्रम क्या है, यह जानने के लिए कि मेरे कोड से इच्छित वस्तु को कैसे प्राप्त किया जाए।मैं अपने संदेश बनाने के लिए लॉगिंग सिस्टम में socket.io के अंतर्निहित कैसे प्लग करूं?

लंबे समय तक, मैं शायद अधिक मजबूत लॉगिंग सिस्टम मॉड्यूल (फाइलों को लॉग करने की क्षमता, ऑटो-घुमाने, प्रति मॉड्यूल आधार पर स्तर प्रबंधित करने, कस्टम लॉग स्तर इत्यादि) के साथ जाने की क्षमता के साथ जा रहा हूं। Winston समझदार दिखता है, लेकिन क्या मुझे इसका उपयोग करने के लिए socket.io भी मिल सकता है? सब कुछ एक ही स्थान पर होना अच्छा लगेगा।

उत्तर

8

है, मैं तो जैसे मौजूदा लकड़हारा मॉड्यूल में प्लग करने में सक्षम था

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

क्या आपने Connect से लॉगर मिडलवेयर का उपयोग करने में देखा है? ऐसा लगता है कि किसी ने पहले से ही लाइब्रेरी बनाई है जिसे आप socket.IO-connect कहलाते हैं। मैं अपने Express कार्यक्रम में कुछ इसी तरह का उपयोग करें:

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 भी बहुत सरल है:: socket.io का उपयोग कर

var connect = require('connect'); 

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

यह वादा करता है! मैं कल इसे नज़दीकी रूप से देखूंगा और देख सकता हूं कि यह कनेक्ट मिडलवेयर के माध्यम से अपने लॉगिंग संदेशों को रूट करने के लिए सॉकेट-आईओ को मजबूर करता है या नहीं। मेरी फ़ॉलबैक रणनीति केवल सॉकेट लॉगिंग 0 पर सेट करना है और विंस्टन के साथ अपनी सभी लॉगिंग करना है। मैं कुछ निम्न स्तर की पहुंच खो दूंगा, लेकिन अगर मुझे सॉकेट स्तर पर समस्याएं आ रही हैं तो मुझे बड़ी समस्याएं हैं जिनके लिए वैसे भी अधिक सुदृढ़ डीबगिंग की आवश्यकता है। – drewww

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

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