2011-10-26 12 views
14

मैं अपनी साइट पर सभी क्लाइंट-साइड जावास्क्रिप्ट त्रुटियों को पकड़ना चाहता हूं और उन्हें लॉग इन करना चाहता हूं। ऐसा करने के लिए कुछ सर्वोत्तम अभ्यास क्या हैं?खिड़की के साथ क्लाइंट त्रुटियों की रिपोर्ट करने के लिए सबसे अच्छा अभ्यास। आतंक?

विचार:

  • मैं आसानी से, हमारे webapp करने के लिए एक /log/ हैंडलर जोड़ सकते हैं पार्स प्राप्त/पोस्ट मापदंडों और सर्वर साइड पर अपने मौजूदा प्रवेश प्रणाली का उपयोग करें। क्या यह भी स्पष्ट है?
  • window.onerror हर जगह काम करता है? यदि हैंडलर में कोई त्रुटि होती है तो क्या होगा?
  • क्या मुझे पृष्ठ पर <img> टैग संलग्न करना चाहिए या XmlHttpRequest बनाना चाहिए? क्या होगा यदि एक्सएचआर विफल रहता है?
  • टूटी छवियों और jQuery अजाक्स विफलताओं के बारे में क्या - क्या मैं उन्हें भी पकड़ सकता हूं?
+0

सभी को धन्यवाद! सबसे अधिक जानकारी के साथ बाउंटी dgvid जाता है। स्वीकृत उत्तर जानकारी के सुपरसेट के साथ ज़ोरान में जाता है। –

उत्तर

6

सभी Jbecwar और dgvid द्वारा दिए गए सुझावों शांत कर रहे हैं, मैं जोड़ना होगा:

  • टिप्पणी ओपेरा का समर्थन नहीं करता कि त्रुटि घटना stacktrace.js साथ quirksmode error event
  • सभा stacktraces देखने में मदद कर सकता त्रुटियों का निवारण
  • यदि त्रुटि हैंडलर सर्वर पक्ष में त्रुटि रिपोर्ट भेजने में असमर्थ है, कुकीज का उपयोग करने के लिए फॉलबैक: base64 एन्कोडेड त्रुटि रिपोर्ट (संपीड़ित?) के साथ error.yourdomain.com के लिए कुकी सेट करें और प्रत्येक पृष्ठ पर उस डोमेन से खाली 1x1 पिक्सेल छवि का अनुरोध करें
  • या एचटीएमएल 5 स्थानीय स्टोरेज का उपयोग करें और इसे अपलोड करें जब आप
+0

असल में ओपेरा 11.60 के बाद इसका समर्थन करता है (स्रोत: http://dev.opera.com/articles/view/better-error-handling-with-window-onerror/) – RelaXNow

+0

StackTrace.js जाहिर है http: // stacktracejs पर .com। –

3

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

इसके अलावा, window.onerror डोम के साथ गड़बड़ करने के लिए iframes के लिए काम करेगा नहीं और मैं XMLHttpRequest करना होगा, आप नहीं चाहते हैं, तो आप पहले से ही समस्याओं

टीएल होने; डॉ; क्लाइंट साइड अनुरोधों को सीमित करें और सर्वर पर सीमाएं लागू करें। window.onerror iframes के लिए अच्छा नहीं है, और xmlhttprequest का उपयोग करें।

3

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

आप img तत्व को त्रुटि हैंडलर संलग्न करके एक आईएमजी लोड विफलता पकड़ सकते हैं, फिर इसकी src विशेषता सेट कर सकते हैं। सिर्फ तथ्य यह है कि निर्दिष्ट तत्व लोड करने के दौरान एक त्रुटि हो गई

$("img#my-image").error(onImgError).prop("src", "images/my-image.jpg"); 

तुम बहुत जानकारी है कि जिस तरह से नहीं मिलेगा, उदाहरण के लिए, jQuery का उपयोग कर।

आप jQuery.ajax अनुरोधों में विफलताओं को संभाल सकते हैं जिसमें सेटिंग्स ऑब्जेक्ट में त्रुटि ऑब्जेक्ट में त्रुटि कॉलबैक फ़ंक्शन शामिल है .ajax। कोशिश-पकड़ में सफलता और त्रुटि कॉलबैक फ़ंक्शंस दोनों में कोड को लपेटना सुनिश्चित करें।

आम तौर पर, आप अपने कोड को ट्राइक-कैच ब्लॉक के साथ सुरक्षित रखना चाहते हैं ताकि आप त्रुटियों को पकड़ सकें और लॉग कर सकें। खिड़की को संभालना। आतंक उन चीजों के लिए अंतिम उपाय होना चाहिए - जो चीजों से निकलती हैं।

अपनी खिड़की में। आतंक हैंडलर, कोशिश-पकड़ ब्लॉक में सब कुछ लपेटें और सुनिश्चित करें कि आप पकड़ ब्लॉक में कोड से फेंक नहीं पाएंगे (यदि आवश्यक हो तो नेस्टेड प्रयास-कैच का उपयोग करके)।

3

हमने हाल ही में Google-analytics के पृष्ठ-दृश्य के रूप में अनचाहे त्रुटियों की रिपोर्ट करना शुरू कर दिया है। मूल विचार यह है कि एक विंडो। आतंक हैंडलर त्रुटि जानकारी (स्क्रिप्ट फ़ाइल पथ, रेखा संख्या और त्रुटि संदेश) को वर्चुअल त्रुटि-पृष्ठ-यूआरएल में परिवर्तित करेगा और इसे पृष्ठ दृश्य के रूप में रिपोर्ट करेगा। आप तर्क को किसी भी पेज ट्रैकिंग तंत्र पर लागू कर सकते हैं।

सरल कोड का उपयोग हम गूगल एनालिटिक्स के सभी विश्लेषणात्मक शक्ति के साथ https://github.com/shyam-habarakada/js-watson

पर GitHub पर उपलब्ध है, और इस सरल तकनीक है, हम लगातार और गंभीर त्रुटियों की पहचान करने में बड़ी सफलता थी और कर लिया है उन्हें जल्दी हल करें। आप समग्र त्रुटियों में रुझानों का विश्लेषण करने के लिए जीए की शक्ति का उपयोग भी कर सकते हैं, विशिष्ट फाइलों में विशिष्ट त्रुटियां इत्यादि। अत्यधिक अनुशंसित।

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