Уведомления

Плагин 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);

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

Адрес эл. поты не публикуется. Обязательные поля помечены *

Прокрутить вверх