2008-09-18 12 views
9

मैं एक "सार्वभौमिक" डीबग लॉगिंग फ़ंक्शन बनाना चाहता हूं जो प्रसिद्ध लॉगिंग पुस्तकालयों के लिए जेएस नेमस्पेस का निरीक्षण करता है।जावास्क्रिप्ट से डीबग लॉगिंग उपकरण क्या उपलब्ध हैं?

var console = window['console']; 
if (console && console.log) { 
    console.log(message); 
} 

जाहिर है, Firefox में यह केवल काम करता है अगर Firebug स्थापित किया गया है/सक्षम (यह भी अन्य ब्राउज़र पर Firebug Lite के साथ काम करेंगे):

उदाहरण के लिए, वर्तमान में यह Firebug के console.log का समर्थन करता है। असल में, मैं एक जेएस लाइब्रेरी प्रदान करूँगा जो मुझे नहीं पता कि यह किस माहौल में खींचा जाएगा, और मैं यह समझने में सक्षम होना चाहता हूं कि उपयोगकर्ता को डीबग आउटपुट रिपोर्ट करने का कोई तरीका है या नहीं।

तो, शायद jQuery कुछ प्रदान करता है - मैं जांचता हूं कि jQuery मौजूद है और इसका उपयोग करें। या हो सकता है कि जाने-माने आईई प्लगइन्स हैं जो काम करते हैं कि मैं इसके लिए स्नीफ कर सकता हूं। लेकिन यह एक काफी अच्छी तरह से स्थापित और इस्तेमाल किया तंत्र होना चाहिए। मैं लोगों द्वारा बनाए गए हर अस्पष्ट लॉग फ़ंक्शन की जांच नहीं कर सकता।

कृपया, प्रति जवाब केवल एक पुस्तकालय/प्रौद्योगिकी, ताकि वे वोट-रैंक प्राप्त कर सकें। इसके अलावा, अलर्ट() का उपयोग करना एक अच्छा शॉर्ट-टर्म समाधान है, लेकिन यदि आप मजबूत डीबग लॉगिंग चाहते हैं या निष्पादन को अवरुद्ध करना चाहते हैं तो एक समस्या है।

उत्तर

-1

मैं स्वयं, मैं निम्नलिखित में एक फर्म आस्तिक हूँ:

alert('Some message/variables'); 
+0

यह एक अच्छा अस्थायी समाधान है, लेकिन अगर आप जानकारी-स्तरीय लॉगिंग उत्सर्जित कर रहे हैं, तो असफल हो जाता है, जो आमतौर पर बहुत अधिक होता है। सभी चेतावनी() s – levik

+0

अहह की वजह से ऐप जल्दी से अनुपयोगी हो जाएगा, मुझे लगता है कि यह जानकारी – Teifion

+0

की अल्पकालिक आउटपुटिंग के बारे में अधिक थी, भले ही आप केवल "आउटपुट" जानकारी दे रहे हों, क्योंकि अलर्ट एक अवरुद्ध कॉल है, दुर्भाग्य से, यह दुर्भाग्यवश हो सकता है , दुष्प्रभाव का कारण बनता है, esp। अजाक्स के साथ मेरे पास केवल गलत स्थान पर रखी गई अलर्ट की वजह से कोड खराब व्यवहार करता है। –

4

Firebug lite एक क्रॉस ब्राउज़र, Firefbug की लाइट संस्करण है कि करेंगे कम से कम आप सबसे ब्राउज़रों पर console.log क्षमताओं देना है।

0

Firebug Lite (उन गैर-फ़ायरफ़ॉक्स ब्राउज़र के लिए) के बारे में क्या? आईई में डोजो कोड डीबग करने के अलावा मैंने इसका बहुत कुछ उपयोग नहीं किया है। लेकिन यह आईई, सफारी और ओपेरा में फायरबग कंसोल डालने के लिए सबसे अच्छा प्रयास करता है।

बेशक हमेशा विश्वसनीय 'अलर्ट (err_msg) होता है;' : डी

1

यदि आप पहले से ही jQuery का उपयोग कर रहे हैं, तो मैं खुशी से jQuery डीबग प्लगइन (a.k.a., jquery.debug.js) की अनुशंसा कर सकता हूं। http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/ देखें।

यह प्लगइन आपको डीबग लॉगिंग बंद या वैश्विक स्विच के माध्यम से स्विच करने की अनुमति देता है। लॉगिंग इस तरह दिखता है:

$.log('My value is: ' + val); 

आउटपुट फ़ायरफ़ॉक्स के तहत console.log को भेजा जाता है और एक div अन्य ब्राउज़र पर पृष्ठ के तल पर डाला ब्लॉक करने के लिए लिखा है।

+0

मैं jQuery का उपयोग नहीं कर रहा हूं - जैसा कि कहा गया है, मैं एक लाइब्रेरी बना रहा हूं जिसे एक पृष्ठ में लोड किया जा सकता है जहां jQuery मौजूद है। यदि ऐसा होता है, तो मैं उन jQuery सुविधाओं का उपयोग करना चाहता हूं जिन पर मैं भरोसा कर सकता हूं ... लेकिन एक तृतीय पक्ष प्लगइन एक खिंचाव है ... – levik

7

मैं व्यक्तिगत रूप से फ़ायरबग/फायरबग लाइट का उपयोग करता हूं और आईई पर विजुअल स्टूडियो को डीबगिंग करने देता है। इनमें से कोई भी अच्छा नहीं है जब कोई विज़िटर कुछ पागल ब्राउज़र का उपयोग कर रहा हो। आपको अपने सर्वर पर अपनी त्रुटियों को लॉग इन करने के लिए वास्तव में अपने क्लाइंट साइड जावास्क्रिप्ट को प्राप्त करने की आवश्यकता है। नीचे दी गई पावर प्वाइंट प्रेजेंटेशन पर एक नज़र डालें। आपके सर्वर पर सामान लॉग करने के लिए अपने जावास्क्रिप्ट को कैसे प्राप्त करें इस पर कुछ सुंदर विचार हैं।

असल में, आप खिड़की को हुक करते हैं। आतंक और आपकी कोशिश {} पकड़() {} ब्लॉक एक फ़ंक्शन के साथ है जो आपके सर्वर पर उपयोगी डीबग जानकारी के साथ अनुरोध करता है।

मैंने अभी अपने स्वयं के वेब एप्लिकेशन पर ऐसी प्रक्रिया लागू की है। मुझे प्रत्येक पकड़() {} ब्लॉक को एक फ़ंक्शन को कॉल करना है जो सर्वर पर एक JSON एन्कोडेड संदेश भेजता है, जो बदले में मेरे मौजूदा लॉगिंग इंफ्रास्ट्रक्चर (मेरे मामले log4perl में) का उपयोग करता है।जिस प्रेजेंटेशन से मैं लिंक कर रहा हूं, वह भी आपके जावास्क्रिप्ट में एक छवि लोड करने का सुझाव देता है जिसमें जीईटी अनुरोध के हिस्से के रूप में त्रुटियां शामिल हैं। एकमात्र समस्या यह है कि यदि आप स्टैक निशान (जो आईई आपके लिए उत्पन्न नहीं करता है) शामिल करना चाहते हैं, तो अनुरोध बहुत बड़ा होगा।

Tracking ClientSide Errors, by Eric Pascarello

पुनश्च: मैं जोड़ने के लिए है कि मुझे लगता है कि यह एक अच्छा विचार "कट्टर" प्रवेश के लिए jQuery की तरह पुस्तकालय के किसी भी प्रकार का उपयोग करने के लिए है, क्योंकि हो सकता है त्रुटि आप प्रवेश कर रहे हैं के लिए कारण है न चाहता था jQuery या फायरबग लाइट! शायद त्रुटि यह है कि ब्राउज़र (खांसी आईई 6) कुछ पागल लोडिंग ऑर्डर किया और कुछ प्रकार की नल रेफरेंस त्रुटि फेंक रही है क्योंकि लाइब्रेरी को सही तरीके से लोड करने के लिए यह बहुत बेवकूफ था।

मेरे उदाहरण में, मैंने सुनिश्चित किया कि मेरा सभी जावास्क्रिप्ट लॉग कोड < हेड > में है और एक .js फ़ाइल के रूप में नहीं खींचा गया है। इस तरह, मैं उचित रूप से सुनिश्चित कर सकता हूं कि इससे कोई फर्क नहीं पड़ता कि ब्राउज़र किस प्रकार की वक्र गेंदों को फेंकता है, बाधाएं अच्छी हैं, मैं इसे लॉग इन करने में सक्षम हूं।

3

MochiKit निम्नलिखित कार्य (पूर्ण नाम स्थान संकल्प के साथ यहाँ शामिल है):

MochiKit.Logging.logDebug() // prefaces value with "DEBUG: " 
MochiKit.Logging.log() // prefaces value with "INFO: " 
MochiKit.Logging.logError() // prefaces value with "ERROR: " 
MochiKit.Logging.logFatal() // prefaces value with "FATAL: " 
MochiKit.Logging.logWarning() // prefaces value with "WARNING: " 

वहाँ एक बहुत इस से MochiKit.Logging नाम स्थान के लिए और अधिक है, लेकिन इन मूल बातें कर रहे हैं।

7

आप log4javascript को आजमा सकते हैं।

प्रकटीकरण: मैंने इसे लिखा था।