wp-code.ru wordpress WP-Codе

Автоматическое создание и удаление логов в WordPress

В процессе разработки и эксплуатации сайта на 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

Ведение логов — ключевой инструмент для диагностики и мониторинга. Автоматизация удаления старых логов помогает поддерживать порядок и экономить ресурсы сервера. Используйте системный лог для ошибок, а пользовательские — для специфичных задач.

Не забывайте контролировать размер папок с логами и настраивать ротацию. Если хотите расширенные возможности — выбирайте проверенные плагины с поддержкой автоматизации.

Используйте приведённые примеры кода как основу для своих задач и адаптируйте под конкретные нужды проекта.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше