2014-09-30 3 views
3

Предположим, что конкретный пользователь использует Chrome и получает ошибку времени выполнения, которая регистрируется в консоли Chrome. Я хотел бы знать, что это за ошибка. В настоящее время мне придется обратиться к конкретному пользователю, заставить их открыть консоль и сообщить мне, что такое ошибка (или отправить скриншот).Есть ли способ зарегистрировать ошибки консоли браузера

Есть ли способ для автоматического обнаружения или регистрации этой ошибки (независимо от того, что является ошибкой) и отправки ее на сервер?

В качестве последующего вопроса есть ли способ сделать это для всех основных браузеров?

+0

Существуют различные инструменты/библиотеки, которые делают это. Посмотрите на [Sentry] (https://www.getsentry.com/for/javascript/) для примера. –

ответ

4

Вы можете обернуть console.log и console.error с методом регистрации

var log = console.log; 

console.log = function() { 
    //Ajax post arguments to your server for logging 
    return log.apply(console, arguments); 
}; 

var error = console.error; 

console.error = function() { 
    //log arguments to server 
    return error.apply(console, arguments); 
}; 
+0

Что относительно ошибок, которые генерируются браузером, а не что-то, что я специально регистрирую? Если браузер не может разобрать ответ JSON (в качестве примера), браузер зарегистрирует ошибку. Я хотел бы узнать об этом. Означает ли это вышеупомянутый сценарий? – user1775598

+0

Нет, это не будет, но он получит журналы и ошибки, отправленные любым JS-кодом. Если вы хотите также регистрировать ошибки браузера, вы можете использовать window.onerror = function (errorMsg, url, lineNumber) { // ajax log to server ('Error:' + errorMsg + 'Script:' + url + 'Line: '+ lineNumber); }. HTML 5 onerror также отправляет col, error. – artm