Не знаю как отправить лог по нажатию кнопки, да и если ошибка критическая, то вполне вероятно, что js на странице уже не работает и никакие нажатия на кнопку обработаны не будут. Я перехватывю и логирую на бэкенде все ошибки фронтенда. Раньше всех скриптов подключить на странице это
https://github.com/darcyclarke/Detect.js и это
window.onerror = function(err, url, line, col, msg) {
var data = {
'Error': err,
'URL': url,
'Line': line,
'Column': null,
'Message': null,
'Browser': null,
'OS': null,
'Device': null
};
// HTML5 only
data['Column'] = !col ? '' : col;
data['Message'] = !msg ? '' : msg;
try {
var ua = detect.parse(navigator.userAgent);
data['Browser'] = !ua.browser.name ? '' : ua.browser.name;
data['OS'] = !ua.os.name ? '' : ua.os.name;
data['Device'] = !ua.device.name ? '' : ua.device.name;
}
catch(e) {}
console.groupCollapsed('Error: ' + data['Error']);
console.log('URL: ' + data['URL']);
console.log('Line: ' + data['Line']);
if(data['Column'])
console.log('Column: ' + data['Column']);
if(data['Message'])
console.log('Message: ' + data['Message']);
console.groupEnd();
try {
$.post('/frontend/error/', data);
}
catch(e) {}
return true; //suppressErrorAlert
};
а на сервере настроить обработчик, сохраняющий полученные ошибки в файл.