2017-05-05 8 views
9

मुझे इन त्रुटि को बैक-एंड पर लॉग फ़ाइल में जोड़ना होगा। इन त्रुटि को कोणीय 2 में नहीं पकड़ा जाता है। इन त्रुटि को कैसे पढ़ा जा सकता है? Browser console snapshotजावास्क्रिप्ट या कोणीय 2 का उपयोग कर ब्राउज़र त्रुटि को कैसे पढ़ा जा सकता है?

+0

संभावित डुप्लिकेट: [? जावास्क्रिप्ट console.log कैप्चरिंग] (http://stackoverflow.com/questions/11403107/कैप्चरिंग-जावास्क्रिप्ट-कंसोल-लॉग) – abhishekkannojia

+0

@abhishekkannojia वे console.log ओवरराइड कर रहे हैं लेकिन मैंने कहीं भी console.log नहीं रखा है। मैं जो चाहता हूं वह कुछ अंतराल पर है, मैं पूर्ण ब्राउज़र कंसोल पढ़ूंगा, फिर इसे बैकएंड पर धक्का दूंगा। – Rohit

+0

निम्न पोस्ट एक जरूरी है क्योंकि यह 'window.onerror' से संबंधित क्रॉस-ब्राउज़र मुद्दों को इंगित करता है: [window.onerror के साथ जावास्क्रिप्ट त्रुटियों को कैप्चर करें और रिपोर्ट करें] (https://blog.sentry.io/2016/01 /04/client-javascript-reporting-window-onerror.html) – deblocker

उत्तर

10

के रूप में इस MDN article में बताया गया है, यदि आप एक कैप्चरिंग ईवेंट हैंडलर window.addEventListener("error", fn, true) के साथ परिभाषित में एक window.onerror ईवेंट हैंडलर में जावास्क्रिप्ट क्रम त्रुटियों को पकड़ने संसाधन लोड हो रहा है त्रुटियां पकड़ है, और कर सकते हैं।

एक सेवा इन ईवेंट हैंडलर सेट कर सकती है और किसी सरणी में त्रुटियों को रिकॉर्ड कर सकती है। जब आप चाहें तो सर्वर को सरणी की सामग्री भेज देंगे। सेवा ऐसा दिखाई दे सकता:

export class ErrorLogService { 

    private errors = new Array<any>(); 

    constructor() { 
     let that = this; 
     window.onerror = function (msg, url, lineNo, columnNo, error) { 
      let string = msg.toLowerCase(); 
      let substring = "script error"; 
      if (string.indexOf(substring) > -1) { 
       console.log("Script Error: See Browser Console for Detail"); 
      } else { 
       that.errors.push({ 
        message: msg, 
        url: url, 
        line: lineNo, 
        column: columnNo, 
        error: error 
       }); 
      } 
      return false; 
     }; 
     window.document.addEventListener("error", (event: ErrorEvent) => { 
      if (event.target && (event.target as any).src) { 
       let url = (event.target as any).src; 
       this.errors.push({ 
        message: "Resource not found", 
        url: url 
       }); 
      } else { 
       this.errors.push({ 
        message: "Unknown error", 
        error: event 
       }); 
      } 
     }, true); 
    } 
} 

त्रुटि का पता लगाने तंत्र this jsfiddle में परीक्षण किया जा सकता है।

0

आप निम्नलिखित कोड

उपयोग कर सकते हैं
(function(console){ 

console.save = function(data, filename){ 

if(!data) { 
    console.error('Console.save: No data') 
    return; 
} 

if(!filename) filename = 'console.json' 

if(typeof data === "object"){ 
    data = JSON.stringify(data, undefined, 4) 
} 

var blob = new Blob([data], {type: 'text/json'}), 
    e = document.createEvent('MouseEvents'), 
    a = document.createElement('a') 

a.download = filename 
a.href = window.URL.createObjectURL(blob) 
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':') 
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, 
false, false, 0, null) 
a.dispatchEvent(e) 
} 
})(console) 

स्रोत: https://plus.google.com/u/0/+UmarHansa/posts/G3VZ9sG9SCH

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