В процессе разработки и поддержки сайтов на WordPress одна из ключевых задач — быстро и точно выявлять причины ошибок. Стандартное логирование WordPress часто слишком скудное, а сообщения об ошибках не всегда помогают понять суть проблемы. В этой статье разберём, как сделать подробный и информативный лог ошибок в WordPress, чтобы упростить диагностику и ускорить исправление багов.
Почему стандартный лог ошибок WordPress недостаточен
По умолчанию WordPress пишет ошибки в файл wp-content/debug.log при включённом режиме отладки (константа WP_DEBUG). Однако:
- Сообщения бывают слишком общими и не показывают контекст.
- Не ведётся лог предупреждений и уведомлений PHP, которые могут быть важны.
- Нет разделения логов по типам ошибок и плагинам.
- Отсутствуют временные метки и уровни логирования.
Для серьёзной разработки и поддержки сайта этого мало. Поэтому нужно гибко настраивать логирование.
Основы настройки расширенного логирования в WordPress
Включение отладки и логирования PHP
Для начала убедимся, что в wp-config.php активированы базовые настройки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Это включает отладку, пишет ошибки в wp-content/debug.log и отключает вывод ошибок на экран (что важно для безопасности).
Включение полного логирования PHP
Добавим в wp-config.php следующие строки, чтобы фиксировать все типы ошибок, включая предупреждения и уведомления:
ini_set('log_errors', 1);
ini_set('error_log', WP_CONTENT_DIR . '/php-error.log');
error_reporting(E_ALL);Это создаст отдельный файл php-error.log для логов PHP, где будет храниться полная информация.
Использование Monolog для структурированного логирования в WordPress
Для более профессионального подхода можно использовать библиотеку Monolog. Она позволяет:
- Логировать с разными уровнями: DEBUG, INFO, WARNING, ERROR.
- Добавлять временные метки, контекст, стек вызовов.
- Писать логи в файлы, базы данных, внешние сервисы.
Пример интеграции Monolog в WordPress:
require_once __DIR__ . '/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
function wpurok_monolog_init() {
$log = new Logger('wpurok');
$logFile = WP_CONTENT_DIR . '/wpurok-monolog.log';
$log->pushHandler(new StreamHandler($logFile, Logger::DEBUG));
return $log;
}
$wpurok_logger = wpurok_monolog_init();
// Пример записи лога
$wpurok_logger->error('Ошибка в плагине XYZ', ['user_id' => get_current_user_id()]);Такой подход позволит удобно фильтровать и анализировать ошибки.
Плагины для расширенного логирования ошибок в WordPress
Если не хочется писать код, можно использовать готовые решения:
- Error Log Monitor — плагин для просмотра ошибок PHP прямо в админке.
- WP Log Viewer — расширенный просмотрщик логов с фильтрами и поиском.
- Query Monitor — не только ошибки, но и запросы к базе, HTTP-запросы, хуки.
Эти инструменты помогут быстро находить причины неполадок без SSH-доступа.
Пример создания собственного логгера для отладки плагинов и тем
Ниже простой пример функции для записи пользовательских сообщений в отдельный файл лога:
function wpurok_write_log($message) {
if (is_array($message) || is_object($message)) {
$message = print_r($message, true);
}
$file = WP_CONTENT_DIR . '/wpurok-custom.log';
$time = date('Y-m-d H:i:s');
error_log("[$time] $message\n", 3, $file);
}Использовать её просто:
wpurok_write_log('Проверка значения переменной: ' . $var);Это поможет локализовать проблемы в вашем коде без вмешательства в системные логи.
Советы по организации логов и безопасности
При работе с логами важно:
- Не оставлять включённое логирование на продакшене без необходимости — нагрузка и риски.
- Ограничивать доступ к файлам логов через
.htaccessили серверные настройки. - Регулярно архивировать и очищать логи, чтобы не перегружать диск.
- Использовать разные файлы для разных типов логов: PHP, пользовательские, плагинов.
Для примера, защитим лог от доступа с помощью .htaccess:
<Files "wpurok-custom.log">
Order allow,deny
Deny from all
</Files>Итог: как сделать логирование максимально полезным
Подведём кратко шаги:
- Включите в
wp-config.phpWP_DEBUG,WP_DEBUG_LOG,WP_DEBUG_DISPLAYпо рекомендациям. - Добавьте расширенное логирование PHP через
ini_set. - Если нужно — интегрируйте Monolog для структурированных логов.
- Используйте плагины Error Log Monitor и Query Monitor для удобства.
- Создайте свои функции логирования для отладки сложных участков кода.
- Обязательно настройте безопасность и регулярное обслуживание логов.
Такой подход позволит быстро выявлять ошибки, видеть подробную информацию и эффективно поддерживать проекты на WordPress.
Для удобного просмотра и управления логами рекомендуем ознакомиться с плагином Error Log Monitor на WPSHOP.