2012-11-20 38 views
8

क्रॉस-ब्राउज़र तरीके से, जावास्क्रिप्ट में एक स्टैक ट्रेस कैसे उत्पन्न करें, इस पर कोई सुझाव?जावास्क्रिप्ट स्टैकट्रैक कैसे उत्पन्न करें?

नए ब्राउज़र, क्रोम और फ़ायरफ़ॉक्स, एक कंसोल ऑब्जेक्ट का पर्दाफाश करते हैं जो स्टैक निशान उत्पन्न होने की अनुमति देता है। यह विधि एक चर के लिए स्टैक ट्रेस को संग्रहीत करने के लिए एक विधि प्रदान नहीं करती है।

https://github.com/eriwen/javascript-stacktrace काफी अच्छी तरह से काम करता है, लेकिन यह ट्रेस के हिस्से के रूप में शामिल स्क्रिप्ट फ़ाइलों को लोड करने के लिए अलग AJAX अनुरोध करता है। यह ट्रेस पुस्तकालयों में एक आम विधि प्रतीत होता है। मैं अनुमान लगा रहा हूं कि ब्राउज़र एक सार्थक स्टैक-ट्रेस उत्पन्न करने के लिए पर्याप्त जानकारी का खुलासा नहीं करते हैं (रेखा संख्याएं, फ़ंक्शन नाम, फ़ाइल नाम, तर्क, आदि)।

+0

आप सही है कि IE9- (जाने क्यों न हम स्वीकार कर रहे हैं, हम कर रहे हैं कि शायद क्या यहां से परेशानी हो रही है) बहुत उपयोगी जानकारी नहीं देती है। कोई 'window.onerror' से फ़ाइल और लाइन नंबर प्राप्त कर सकता है सिवाय इसके कि केवल कुछ समय निकालता है और लाइन संख्या कभी-कभी गलत होती है। –

+0

हां, सामान्य रूप से, आईई समस्या बच्चा है। मैं आईई 7 का समर्थन कर रहा हूं जिसके लिए आतंकवादी घटना की लाइन संख्या और फ़ंक्शन नाम की जानकारी भयानक है। यह अभी भी उपयोगी हो सकता है; मैं इसे गलत त्रुटियों के लिए लॉग लिखने के लिए उपयोग करता हूं। – Kyle

उत्तर

1

एक त्रुटि ऑब्जेक्ट बनाएं और इसे एक स्टैक सदस्य के लिए जांचें। Code Overtones से अनुकूलित:

var e = new Error('dummy'); 
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '(' 
    .replace(/^\s+at\s+/gm, '') // remove prefix text ' at ' 
    .split('\n'); 
console.log(stack); 

Error.stack Mozilla's reference documentation में प्रलेखित है।

0

Airbrake provides a JavaScript library for logging stacktraces आपके एयरब्रैक खाते या एरबिट सर्वर पर।

मुझे आईई में स्टैक निशान नहीं मिलते हैं, और अन्य अपूर्ण हो सकते हैं, लेकिन यह निश्चित रूप से ऐसा लगता है कि आप जो खोज रहे हैं उसके साथ ही है।

+0

धन्यवाद। मेरे पास पहले से ही एक ढांचा है जो मेरे सर्वर पर लॉग इन कर सकता है। यह जावास्क्रिप्ट में मूल रूप से log4j है। आपके द्वारा प्रदान किए गए लिंक में स्टैक-ट्रेस जनरेटिंग कोड ऐसा लगता है कि इसे मेरे प्रश्न में प्रोजेक्ट से उधार लिया गया था। मैं स्टैक-ट्रेस पीढ़ी के लिए अन्य पुस्तकालयों की तलाश में हूं। उपयोग में वास्तविक लॉगिंग ढांचे अलग होना चाहिए। – Kyle

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

  • कोई संबंधित समस्या नहीं^_^