Приложение можно скачать здесь.
Для передачи данных об ошибке в клиентском приложение добавить следующий скрипт (лучше в теге head)
var __error = window.onerror;
var __es = [];
// дополнительные параметры
var __meta = {
user: 'test',
ver: '1.0.0' // указание версии обязательно
};
var __ts = null;
window.onerror = function (msg, url, num, p, err) {
var str = '';
if (err && (str = err.stack)) {
__es.push(str.replace(new RegExp(location.href, 'gi'), ''));
if (__ts == null) {
__ts = setTimeout(function () {
clearTimeout(__ts);
__ts = null;
__se();
}, 500);
}
}
if (__error)
return __error(msg, url, num, p, err);
return false;
}
/**
* отправка сообщений об ошибке
*/
function __se() {
var xhr = new XMLHttpRequest();
xhr.open("POST", 'http://localhost:3000/api/error?id=1', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({
m: __meta,
e: __es
}));
}
Заменив в нем адрес отправки http://localhost:3000/api/error?id=1 не требуемый. При этом идентификатор приложения (id) можно указать любой.
Так же с клиента можно дополнительно передавать требуемые поля для анализа в объекте __meta.
Серверное приложение имеет три активные ссылки:
- /api/error — принимает постовые запросы с ошибками
- /list?id=1&ver=0.0.0 — выводит список ошибок по приложению (id) и версии (ver)
- /upload — позволяет загружать на сервер приложения для обработки
Для корректной работы требуется:
- чтобы в папке public были созданы папки: apps, logs, temp
- дать права этим папкам на запись