0

Я планирую запустить закрытую бета-версию веб-приложения, над которым я работаю, и мне нужен способ легко собирать данные журнала консоли у тестеров. «Легко» я имею в виду, что это легко, потому что большинство из них не будут достаточно техничными, чтобы открыть консоль и скопировать/вставить информацию и ошибки. Есть ли способ, который я могу собрать, включая все инструкции журнала/информации/предупреждения/ошибки и трассировки стека?Любой способ собирать журналы бета-тестеров?

EDIT: Я должен уточнить, что в основном это необработанные исключения, о которых я беспокоюсь, поэтому переопределение console.error ничего не будет делать, поскольку эта функция не вызывается.

+0

http://stackoverflow.com/questions/11403107/capturing-javascript-console-log –

+0

@RickS См. Мое редактирование выше. Я не звоню на 'console.log' или' console.error' – ffxsam

+0

Как насчет window.error? https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror –

ответ

2

Update

Вы отредактировали вопрос о том, что то, что вы хотите, чтобы войти ошибки, таким образом, вы должны использовать onerror событие, доступный в window объекте.

window.addEventListener('error', function(e) { 
    // log whatever you want here 
}); 

Вы можете сделать что-то подобное в вашем Javascript:

console.print = console.log; 
console.log = function() { 
    console.print(arguments); 

    // collect your data here, for example, sending a XHR 
    var params = "values=" + encodeURIComponent(JSON.stringify(arguments)); 
    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', '/log-data'); 
    xhr.send(params); 
} 

переопределить console.log функциональность, и вы можете делать все, что вы хотите там.

+0

Perfect. И 'e' имеет все детали, которые мне нужны, например номер строки, сообщение об ошибке, URL. – ffxsam

0

Просмотрите библиотеку протоколирования, которая поддерживает ведение журнала в базе данных или выполняет некоторые функции ведения журнала, которые будут выполнять запись ajax с ошибкой log/info/warn/error по мере их возникновения. Сделать сообщение содержит простую информацию, такую ​​как отметка времени, пользователя и консоль. На обратной стороне запишите всю информацию. Это будет самый простой способ для пользователей.

+0

Конечно, библиотека протоколирования будет работать, но не в том случае, когда есть необработанное исключение, которое я не планировал (или не контролирую, если он находится в сторонней библиотеке). – ffxsam

+0

@ffxsam хорошо, вы можете переопределить 'console.log' для записи в db, и вы могли бы захватить' window.onerror' и записать его в db. – dman2306

+0

Переопределение консоли console.log или консоли.ошибка 'не поможет. Необработанное исключение не использует эти функции. Попробуйте переопределить эти функции, а затем выполните «throw Error ('ouch») 'и посмотрите, что я имею в виду. – ffxsam

0

Я наткнулся на ту же самую проблему недавно для webapp для студентов.

Пожалуйста, обратите внимание на мой ответ на «Получить историю консоли»: https://stackoverflow.com/a/40126638/1878974

В принципе, я написал простую библиотеку, чтобы поймать все console[log/info/warn/err/debug] звонки и хранить их в console.history как массив.

Библиотека доступна на GitHub, с большим количеством примеров и документации: https://git.io/console

Таким образом, используя console.history, вы можете - с помощью @ ответ Buzinas в - легко POST всю историю консоли на ваш сервер или хранения раствора:

window.addEventListener('error', function(e) { 

    // POST request to server 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("POST", "/log-data"); 
    xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
    xmlhttp.send(JSON.stringify(console.history)); 

}); 
0

Кто-то рассказал мне о действительно прекрасной службе регистрации ошибок, которая называется Rollbar, которая фактически автоматически регистрирует необработанные исключения. Я использую его сейчас, и это огромная помощь!

Смежные вопросы