Использование модуля для обработки ошибок

Приложение можно скачать здесь.

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

Добавить комментарий