Отслеживание ошибок на сайте WordPress — важная задача для поддержания стабильной и безопасной работы ресурса. В этой статье мы рассмотрим, как создать собственную автоматическую систему логирования ошибок, которая поможет быстро выявлять и исправлять проблемы, а также узнавать о них в режиме реального времени.
Зачем нужна система отслеживания ошибок в WordPress
Ошибки PHP, сбои в работе плагинов, проблемы с базой данных, ошибки JavaScript — все это может негативно влиять на производительность сайта, опыт пользователей и SEO. Автоматическая система отслеживания ошибок позволит:
- Собирать подробные логи с описанием ошибок, включая стек вызовов;
- Получать уведомления на email или в мессенджеры при возникновении критических ошибок;
- Анализировать частоту и типы ошибок для планирования исправлений;
- Уменьшить время простоя сайта за счет быстрого реагирования на проблемы.
Использование встроенных возможностей WordPress для логирования ошибок
WordPress по умолчанию поддерживает ведение логов ошибок через файл debug.log. Для активации этой функции в wp-config.php нужно добавить или изменить следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Это позволит записывать все ошибки, предупреждения и уведомления PHP в файл wp-content/debug.log, не показывая их на экране посетителям.
Однако такой подход имеет ограничения: лог не очищается автоматически, нет уведомлений, и при большом трафике файл может быстро разрастаться.
Создание кастомной системы логирования ошибок с уведомлениями (пример кода)
Рассмотрим, как расширить стандартный механизм, создав собственный плагин для логирования ошибок с отправкой уведомлений по email.
1. Регистрация обработчика ошибок
Создадим функцию wpkit_error_logger_handle_php_error, которая будет сохранять ошибки в отдельный файл и отправлять уведомления, если ошибка критическая.
function wpkit_error_logger_handle_php_error($errno, $errstr, $errfile, $errline) {
$log_file = WP_CONTENT_DIR . '/wpkit-error-log.log';
$error_types = [
E_ERROR => 'ERROR',
E_WARNING => 'WARNING',
E_PARSE => 'PARSE ERROR',
E_NOTICE => 'NOTICE',
E_CORE_ERROR => 'CORE ERROR',
E_CORE_WARNING => 'CORE WARNING',
E_COMPILE_ERROR => 'COMPILE ERROR',
E_COMPILE_WARNING => 'COMPILE WARNING',
E_USER_ERROR => 'USER ERROR',
E_USER_WARNING => 'USER WARNING',
E_USER_NOTICE => 'USER NOTICE',
E_STRICT => 'STRICT',
E_RECOVERABLE_ERROR => 'RECOVERABLE ERROR',
E_DEPRECATED => 'DEPRECATED',
E_USER_DEPRECATED => 'USER DEPRECATED'
];
$type = isset($error_types[$errno]) ? $error_types[$errno] : 'UNKNOWN';
$date = date('Y-m-d H:i:s');
$message = "[$date] $type: $errstr in $errfile on line $errline\n";
error_log($message, 3, $log_file);
// Отправка email при критических ошибках
if (in_array($errno, [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR])) {
wpkit_error_logger_send_email($message);
}
return false; // Передаем обработку PHP дальше
}
function wpkit_error_logger_send_email($message) {
$to = get_option('admin_email');
$subject = 'Сайт WordPress: критическая ошибка';
$headers = ['Content-Type: text/plain; charset=UTF-8'];
wp_mail($to, $subject, $message, $headers);
}
set_error_handler('wpkit_error_logger_handle_php_error');2. Логирование ошибок WordPress через хуки
Мы можем также ловить ошибки через хук wp_die_handler для перехвата фатальных ошибок WordPress и логировать их:
function wpkit_error_logger_wp_die_handler($message, $title = '', $args = []) {
$log_file = WP_CONTENT_DIR . '/wpkit-error-log.log';
$date = date('Y-m-d H:i:s');
$log_message = "[$date] WP Die: $message\n";
error_log($log_message, 3, $log_file);
// Можно отправить email, если нужно
wpkit_error_logger_send_email($log_message);
// Выводим стандартное сообщение
wp_die($message, $title, $args);
}
add_filter('wp_die_handler', function() {
return 'wpkit_error_logger_wp_die_handler';
});Использование готовых плагинов для расширенного логирования и мониторинга
Если вы не хотите писать код, можно использовать готовые решения. Вот несколько полезных плагинов:
- Query Monitor — мощный инструмент для отладки, который показывает PHP ошибки, запросы к базе, хуки, REST API вызовы. Бесплатен и удобен для разработчиков.
- WP Log Viewer — плагин для удобного просмотра логов прямо в админке, позволяет фильтровать и сортировать события.
- Error Log Monitor — следит за логами ошибок и отправляет уведомления на email.
- Clearfy Pro — многофункциональный плагин для оптимизации и безопасности, включает инструменты для контроля ошибок и производительности.
Практические советы по работе с логами и ошибками в WordPress
Организация логов и автоматическая ротация
Чтобы файл логов не рос бесконтрольно, настройте ротацию с помощью cron или системных средств. Например, можно написать скрипт, который архивирует и очищает логи раз в неделю.
Разграничение уровней логирования
Отфильтровывайте сообщения по уровню важности, чтобы не получать спам из предупреждений и уведомлений. В коде обработчика ошибок можно использовать массив уровней, которые вы хотите логировать и отслеживать.
Безопасность логов
Логи содержат важную информацию, не открывайте их публично. Обязательно защитите папку с логами через .htaccess или настройте хранение вне корня сайта.
Заключение
Создание собственной системы отслеживания ошибок в WordPress — полезная практика, которая поможет быстро выявлять проблемы и поддерживать сайт в отличном состоянии. Используйте приведенный пример кода как стартовую точку и адаптируйте под свои задачи. Для расширенных возможностей рассмотрите готовые плагины, например, Clearfy Pro.