Плагин Error Monitor & Notifier кроме логирования поддерживает следующие каналы уведомлений об ошибках:
Оповещения с подробностями о сбое избавляют от мучительного изучения логов и значительно повышают скорость исправления ошибок на WordPress-сайтах.
Разработчики устраняют сбой сразу после поступления мгновенного уведомления и экономят время на поиске ошибок в журнале. Сообщение Error Monitor & Notifier невозможно проигнорировать или не заметить, тогда как ошибки в логах часто остаются без внимания.
Состав уведомления
Сообщение об ошибке содержит:
- Тип ошибки, PHP или JavaScript
Отвечает на вопрос, в какой части сайта — на фронтэнде или на сервере — возникла ошибка или предупреждение
- Уровень PHP-ошибки
Указывает, насколько серьезная ошибка возникла
- Текст сообщения об ошибке
- Путь к файлу, в котором возникла ошибка, и номер строки
- Обратную трассировку стека вызовов, в котором последний вызов функции или метода идет первым
Сообщает последовательность вызовов, которые привели к сбою
- Адрес запроса на основе элемента
REQUEST_URI
суперглобального массива$_REQUEST
Помогает понять, на какой странице или при обращении к какому URL-адресу возникла ошибка
- Заголовок
User-Agent
Заголовок помогает определить устройство пользователя или понять, что сайт посетил поисковый бот
- IP-адрес запроса
Заблокируйте злоумышленника в CloudFlare, iptables или через другой инструмент, если по характеру оповещения видно, что выполняются атаки или попытки сломать сайт
- Идентификатор WordPress-пользователя и ссылку на профиль пользователя, или указание, что сайт посетил Гость
Информация о пользователе помогает сразу связаться с клиентом, когда он столкнулся с ошибкой при оформлении заказа или на другом этапе взаимодействия с сайтом
Игнорирование ошибок
В плагине Error Monitor & Notifier версии 1.1.5 появился хук-фильтр enot_ignore_error
, который разрешает игнорировать отдельные типы ошибок на основе информации, которая доступна через стандартные методы объекта ErrorException. Плагин не станет записывать ошибку в лог или отправлять уведомление по условию, например:
// Игнорировать ошибки уровня E_WARNING, которые генерирует плагин WooCommerce add_filter('enot_ignore_error', static function (bool $ignore, \ErrorException $e): bool { if ( $e->getSeverity() === E_WARNING && strpos($e->getFile(), '/plugins/woocommerce/') !== false ) { return true; } return $ignore; }, 10, 2);
Хуки часто добавляют в файл функций текущей темы. Но отдельные ошибки возникают до загрузки файла
functions.php
, а в других случаях наподобие срабатывания задания cron файл функций не загружается. Поэтому фильтры игнорирования ошибок лучше добавить в отдельный файл наподобиеmu-plugins/enot-ignore-error.php
, чтобы прикрепиться к хуку фильтрации на раннем этапе.
Сокрытие чувствительных аргументов в URL-адресах
С плагином Error Monitor & Notifier версии 1.1.6 доступна маскировка чувствительных аргументов в URL-адресах, которые встречаются в оповещениях об ошибках. Плагин заменяет в адресе значения атрибутов с названиями наподобие api_key
или oauth_token
символами x
.
Разработчикам доступны 3 новых хука — фильтры enot_ignore_url_replace_sensitive_args
, enot_url_replace_sensitive_args
и enot_url_after_sensitive_replacement
для управления поведением маскирования чувствительных значений в адресах:
// Сохранять исходные URL-адреса и не маскировать чувствительные аргументы add_filter('enot_ignore_url_replace_sensitive_args', '__return_true');
// Дополнить или заменить стандартный массив с названиями чувствительных аргументов // в URL-адресах add_filter('enot_url_replace_sensitive_args', static function (array $sensitivities): array { return ['token', 'api_key', 'oauth_token',]; });
// Изменить выходной URL-адрес наподобие https://example.com/?token=xxxxxxx, // в котором плагин замаскировал чувствительные аргументы add_filter('enot_url_after_sensitive_replacement', static function (string $url): string { // Обработать адрес, если потребуется скрыть дополнительные части URL return $url; });
Пользовательская логика перед завершением работы скрипта
С версии 1.1.10 разработчикам доступен хук фильтрации enot_exception_handler_should_exit
.
Плагин оборачивает уведомления, предупреждения, PHP-ошибки, ошибки в JavaScript-коде и ошибки при запросах к базе данных в исключение ErrorException
, при этом сохраняя исходный тип встроенных и пользовательских исключений. Такой подход помогает управлять ошибками централизованно, в одном месте. Аналогично стандартному поведению PHP после обработки пользовательских ошибок, плагин не прерывает работу скрипта, а при критических ошибках вызывает функцию exit;
.
С новой версии плагин предоставляет программистам фильтр, который разрешает добавлять пользовательскую логику логирования, отправки метрик или отладки перед завершением работы скрипта и даже возвращать false
, чтобы сайт не прервал работу при исключениях, которые не отловили вручную в блоке try-catch
.
// Не прерывать работу скрипта, если возникло неотловленное исключение \add_filter('enot_exception_handler_should_exit', static function (bool $should_exit, \Throwable $e): bool { // Кастомная обработка исключения if ($e instanceof \CustomException) { logger()->log("Caught exception: " . $e->getMessage()); return false; // Не прерывать работу скрипта } return $should_exit; }, 10, 2);