2017-05-05 3 views
9

Ich muss diese Fehler in der Protokolldatei am Back-End anhängen. Diese Fehler werden in angular2 nicht erfasst. Wie kann dieser Fehler gelesen werden? Browser console snapshotWie kann Browserfehler mit Javascript oder angular2 gelesen werden?

+0

Mögliche doppelte: [? Capturing Javascript console.log] (http://stackoverflow.com/questions/11403107/capturing-javascript-console-log) – abhishekkannojia

+0

@abhishekkannojia Sie überschreiben console.log, aber ich habe console.log nirgendwo hingebracht. Was ich will, ist in einem Intervall, ich werde die vollständige Browser-Konsole lesen, dann wird es zum Backend schieben. – Rohit

+0

folgenden Post ist ein Muss, da es die Cross-Browser-Probleme im Zusammenhang mit 'window.onerror' hinweisen: [Erfassen und melden Sie JavaScript-Fehler mit window.onerror] (https://blog.sentry.io/2016/01 /04/client-javascript-reporting-window-onerror.html) – deblocker

Antwort

10

Wie in diesem MDN article, können Sie Javascript Laufzeitfehler in einem window.onerror Ereignishandler und fangen Ressourcenladefehler in einem Erfassungsereignishandler definiert mit window.addEventListener("error", fn, true) fangen.

Ein Service könnte diese Event-Handler setzen und die Fehler in einem Array aufzeichnen. Sie würden den Inhalt des Arrays zu dem Server senden, wenn Sie möchten. Der Service könnte wie folgt aussehen:

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); 
    } 
} 

Der Fehlererkennungsmechanismus kann in this jsfiddle getestet werden.

0

Sie den folgenden Code

(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) 

Quelle verwenden können: https://plus.google.com/u/0/+UmarHansa/posts/G3VZ9sG9SCH

Verwandte Themen