Перехват ошибок на front-end с помощью js

Некоторые ошибки происходят на стороне пользователя и не попадают в логи на сервере. В этом могут быть виноваты настройки сети, плагины браузера, которые установил пользователь, политики безопасности или антивирус, которые блокируют загрузку некоторых файлов.

О наличии такой проблемы сложно узнать, т.к. обычный пользователь едва ли станет тратить своё время, чтобы сообщить о ней, а в логах на сервере вы их просто не увидите.

Предлагаемый подход основан на обработке в js ошибок объекта браузера window и отправке этих данных на сервер.

Пусть скрипт на сервере находится по адресу: /front-end/logger. Он читает GET параметры и где то их сохраняет. А пока нужно выполнить перехват и обработку ошибки на front-end:

Скрипт собирает следующий пакет данных:

Если удаётся получить http код ошибки, то скорее всего вы найдете её и в логах на веб-сервере (либо в логах одного из прокси или кеширующих серверов). Если же вместо http кода вы получаете ‘FETCH ERROR’, то файл был блокирован до запроса на сервер и надо разбираться почему это происходит со стороны пользователя.

Ошибки типа LINK — это ошибки при загрузке CSS/JS файлов. Они могут сильно влиять на работу сайта, им нужно уделить пристальное внимание.

Back-end часть logger-а для Drupal

Придумать куда писать логи на back-end, вам не составит труда для вашего частного случая. Но у меня есть готовый вариант для cms drupal 7, и я им здесь поделюсь.

Одна функция объявляет end-point для вызова логирования, а вторая функция — запись лога в системный лог cms.

Мало букафф? Читайте есчо !

Асинхронная загрузка и инициализация js скрипта

Май 13, 2022 г.

С тех пор как стало возможным указать загружаемому в HTML документе скрипту флаги-аттрибуты async и defer, стало необходимо понимать то, в какой очередности скрипты будут исполнены, если они зависят друг от друга. Так если ваш скрипт зависит от ...

Читать

Функция подсчета не нулевых бит (JS)

Май 9, 2023 г.

Когда требуется подсчитать количество не нулевых бит в числе, то следуют алгоритму: проверяют четность числа и смещают на каждой итерации на один разряд вправо, пока число не обратится в ноль. Есть и другой алгоритм, который обходится без цикла. ...

Читать

Раздвигающееся вертикальное меню Drupal 6

Сентябрь 7, 2013 г.

Эта задача из разряда useability. Drupal может штатно создавать блоки вертикальных иерархических меню. Неудобным будет тот случай, когда мы хотим попасть на страницу в глубине иерархии этого меню. Нам придется последовательно заходить на родительские ...

Читать

Как избежать изменения позиции scroll в документе после установки #hash

Февраль 21, 2020 г.

При установке значения hash в url окна, к примеру так: window.location.hash = '#something'; браузер прокрутит документ до позиции элемента вида <a name='something'></a>. Иногда такое поведение является не желательным. После изменения позиции ...

Читать
 

Комментарии к «Перехват ошибок на front-end с помощью js»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: