В процессе разработки и эксплуатации сайта на WordPress ведение логов — важный аспект для отслеживания ошибок, действий пользователей и состояния системы. Однако постоянное накопление лог-файлов может привести к переполнению диска и замедлению работы сайта. В этой статье разберём, как автоматизировать создание логов и их своевременное удаление, используя собственные функции и существующие плагины.
Зачем нужны логи в WordPress: ключевые задачи и типы логов
Логи помогают разработчикам и администраторам сайта:
- Отслеживать ошибки PHP и MySQL;
- Анализировать действия пользователей и администраторов;
- Мониторить работу плагинов и тем;
- Проводить аудит безопасности;
- Оптимизировать производительность.
Типы логов в WordPress могут включать системные (error log), пользовательские события, логи безопасности и кастомные записи, например, логирование изменений в базе данных или действий WooCommerce.
Как включить и настроить системный лог WordPress
В WordPress можно включить логирование ошибок PHP через стандартные константы в файле wp-config.php. Для этого добавьте или измените следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);После этого все ошибки будут записываться в файл wp-content/debug.log. Однако этот файл не очищается автоматически и может расти бесконтрольно.
Чтобы решить эту проблему, можно написать функцию для автоматического удаления логов старше определённого времени.
Пример функции для автоматического удаления старых логов WordPress
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpcode_delete_old_debug_logs() {
$log_file = WP_CONTENT_DIR . '/debug.log';
if (file_exists($log_file)) {
$max_age = 7 * DAY_IN_SECONDS; // Храним логи 7 дней
$file_mod_time = filemtime($log_file);
if (time() - $file_mod_time > $max_age) {
// Очищаем содержимое файла
file_put_contents($log_file, '');
}
}
}
add_action('wp_loaded', 'wpcode_delete_old_debug_logs');Этот код проверяет дату последнего изменения файла debug.log и очищает его, если он старше 7 дней. Вы можете настроить период хранения по своему усмотрению.
Создание пользовательских логов для отладки и мониторинга
Иногда нужно вести отдельные логи для специфичных задач, например, логировать действия пользователей или работу кастомных функций. Для этого можно использовать собственную функцию записи логов в отдельный файл.
Пример функции для создания пользовательского лога
function wpcode_write_custom_log($message) {
$log_dir = WP_CONTENT_DIR . '/custom-logs';
if (!file_exists($log_dir)) {
mkdir($log_dir, 0755, true);
}
$log_file = $log_dir . '/custom-log-' . date('Y-m-d') . '.log';
$time = date('Y-m-d H:i:s');
$log_message = "[{$time}] " . print_r($message, true) . "\n";
file_put_contents($log_file, $log_message, FILE_APPEND);
}
// Пример вызова:
wpcode_write_custom_log('Пользователь вошел на сайт');Данный код создаёт папку wp-content/custom-logs (если её нет), и записывает сообщения в файл с датой. Такой подход удобен для разделения разных типов логов.
Автоматическое удаление старых пользовательских логов
Для управления размером папки с логами полезно удалять старые файлы. Ниже пример функции для удаления файлов в директории старше заданного количества дней.
function wpcode_cleanup_old_custom_logs() {
$log_dir = WP_CONTENT_DIR . '/custom-logs';
if (!is_dir($log_dir)) return;
$files = glob($log_dir . '/custom-log-*.log');
$max_age = 14 * DAY_IN_SECONDS; // Храним логи 14 дней
$now = time();
foreach ($files as $file) {
if ($now - filemtime($file) > $max_age) {
unlink($file);
}
}
}
add_action('wp_loaded', 'wpcode_cleanup_old_custom_logs');Эту функцию можно запускать через wp_loaded или подключить к CRON-задаче WordPress для регулярного выполнения.
Использование плагинов для логирования с автоматическим управлением
Если вы предпочитаете готовые решения, рассмотрите плагины, которые позволяют вести логи и настраивать автоматическую очистку:
- WP Activity Log — подробный аудит пользователей и событий, поддерживает экспорт и очистку логов.
- Error Log Monitor — мониторинг ошибок PHP с уведомлениями и ротацией логов.
- Simple History — лог активности в админке с возможностью очистки.
Для интеграции с сайтом на wp-code.ru рекомендуем посмотреть WP Activity Log на WPSHOP.RU — удобный плагин с поддержкой автоматической очистки и подробной документацией.
Настройка автоматических задач (WP-Cron) для управления логами
Реализовать регулярное удаление и архивирование логов можно через WP-Cron. Пример регистрации и запуска задачи:
function wpcode_register_log_cleanup_cron() {
if (!wp_next_scheduled('wpcode_log_cleanup_event')) {
wp_schedule_event(time(), 'daily', 'wpcode_log_cleanup_event');
}
}
add_action('wp', 'wpcode_register_log_cleanup_cron');
add_action('wpcode_log_cleanup_event', 'wpcode_cleanup_old_custom_logs');Этот код создаёт ежедневную задачу очистки логов, которая будет надежно запускаться без необходимости ручного вызова.
Выводы и рекомендации по работе с логами в WordPress
Ведение логов — ключевой инструмент для диагностики и мониторинга. Автоматизация удаления старых логов помогает поддерживать порядок и экономить ресурсы сервера. Используйте системный лог для ошибок, а пользовательские — для специфичных задач.
Не забывайте контролировать размер папок с логами и настраивать ротацию. Если хотите расширенные возможности — выбирайте проверенные плагины с поддержкой автоматизации.
Используйте приведённые примеры кода как основу для своих задач и адаптируйте под конкретные нужды проекта.