Приложение можно скачать здесь.
Для передачи данных об ошибке в клиентском приложение добавить следующий скрипт (лучше в теге 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
- дать права этим папкам на запись