2017-05-05 51 views
9

Tôi cần phải thêm các lỗi này vào tệp nhật ký trên back-end. Những lỗi này không bị bắt trong angular2. Làm thế nào có thể đọc các lỗi này? Browser console snapshotLàm cách nào để đọc lỗi trình duyệt bằng javascript hoặc angular2?

+0

có thể trùng lặp: [? Chụp console.log javascript] (http://stackoverflow.com/questions/11403107/capturing-javascript-console-log) – abhishekkannojia

+0

@abhishekkannojia Họ đang ghi đè console.log nhưng tôi không đặt console.log ở bất kỳ đâu. Những gì tôi muốn là trên một số khoảng thời gian tôi sẽ đọc giao diện điều khiển trình duyệt đầy đủ sau đó sẽ đẩy nó vào backend. – Rohit

+0

bài đăng sau đây là bài viết phải đọc vì nó chỉ ra các vấn đề liên quan đến trình duyệt liên quan đến 'window.onerror': [Chụp và báo cáo lỗi JavaScript với window.onerror] (https://blog.sentry.io/2016/01 /04/client-javascript-reporting-window-onerror.html) – deblocker

Trả lời

10

Như được giải thích trong MDN article, bạn có thể gặp lỗi thời gian chạy Javascript trong trình xử lý sự kiện window.onerror và bắt lỗi tải tài nguyên trong trình xử lý sự kiện được xác định bằng window.addEventListener("error", fn, true).

Dịch vụ có thể đặt các trình xử lý sự kiện này và ghi lại các lỗi trong một mảng. Bạn sẽ gửi nội dung của mảng đến máy chủ khi bạn muốn. Dịch vụ này có thể trông như thế này: cơ chế phát hiện

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

các lỗi có thể được kiểm tra trong this jsfiddle.

0

bạn có thể sử dụng đoạn mã sau

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

nguồn: https://plus.google.com/u/0/+UmarHansa/posts/G3VZ9sG9SCH

Các vấn đề liên quan