2017-05-05 30 views
9

Muszę dołączyć ten błąd w pliku dziennika na zapleczu. Te błędy nie są przechwytywane w kanale2. Jak odczytać ten błąd? Browser console snapshotJak odczytać błąd przeglądarki przy użyciu javascript lub angular2?

+0

Możliwy duplikat: [? Przechwytywanie javascript console.log] (http://stackoverflow.com/questions/11403107/przechwytywanie-javascript-console-log) – abhishekkannojia

+0

@abhishekkannojia Zastępują konsolę console.log, ale nie wprowadziłem console.log w żadnym miejscu. Czego chcę, to w pewnym przedziale przeczytam pełną konsolę przeglądarki, a następnie popchnę ją do backendu. – Rohit

+0

następujący post jest konieczny do przeczytania, ponieważ wskazuje na problemy z różnymi przeglądarkami związane z 'window.onerror': [Przechwytuj i zgłaszaj błędy JavaScript za pomocą window.onerror] (https://blog.sentry.io/2016/01 /04/client-javascript-reporting-window-onerror.html) – deblocker

Odpowiedz

10

Jak wyjaśniono w tym MDN article, można złapać błędy runtime javascript w handlera window.onerror zdarzeń i błędów ładowanie zasobów połów w określonym obsługi zdarzeń Przechwytywanie z window.addEventListener("error", fn, true).

Usługa może ustawić te procedury obsługi zdarzeń i zarejestrować błędy w tablicy. W razie potrzeby wyślesz zawartość tablicy do serwera. Obsługa mogłaby wyglądać następująco: mechanizm wykrywania

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

Błąd może być testowany w this jsfiddle.

0

można użyć następującego kodu

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

źródło: https://plus.google.com/u/0/+UmarHansa/posts/G3VZ9sG9SCH