Как настроить автоматический сбор и удаление логов в WordPress

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

Зачем нужен автоматический сбор и удаление логов в WordPress

Логирование помогает выявлять ошибки и отслеживать поведение сайта, но без контроля оно становится источником проблем:

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

Автоматизация сбора логов: лучшие подходы и плагины

Использование плагина WP Activity Log

WP Activity Log — мощный инструмент для мониторинга активности пользователей, событий безопасности и изменений. Он собирает логи в удобном формате и предоставляет отчёты.

Преимущества:

Для установки:

  1. Перейдите в админку WordPress → Плагины → Добавить новый.
  2. Введите в поиске «WP Activity Log» и установите плагин.
  3. Активируйте и настройте необходимые события для логирования.

Подробнее о плагине и его возможностях можно узнать на официальной странице WP Activity Log на WPSHOP.

Логирование ошибок с помощью плагина Debug Bar

Для разработчиков и технических специалистов удобен плагин Debug Bar, который добавляет панель с отладочной информацией. Он собирает в логи PHP ошибки, запросы к базе и другую информацию.

Установка аналогична — через репозиторий WordPress. После активации в админке появится панель для быстрого доступа к логам.

Недостаток — не предназначен для длительного хранения логов, а скорее для отладки в процессе разработки.

Пример кода для автоматического удаления логов WordPress

Если логи сохраняются в отдельной директории или таблице базы данных, можно написать функцию для регулярного удаления старых записей или файлов.

Удаление файлов логов из директории

Предположим, логи сохраняются в папке wp-content/logs/. Код для удаления файлов старше 30 дней:

function wpdetect_delete_old_logs() {
    $log_dir = WP_CONTENT_DIR . '/logs/';
    if (!is_dir($log_dir)) {
        return;
    }
    $files = glob($log_dir . '*.log');
    $now = time();
    foreach ($files as $file) {
        if (is_file($file) && ($now - filemtime($file)) > 30 * DAY_IN_SECONDS) {
            unlink($file);
        }
    }
}

add_action('wpdetect_daily_log_cleanup', 'wpdetect_delete_old_logs');

if (!wp_next_scheduled('wpdetect_daily_log_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpdetect_daily_log_cleanup');
}

Этот код создаёт ежесуточное событие, которое удаляет файлы логов старше 30 дней.

Удаление устаревших записей из таблицы базы данных

Если логи сохраняются в таблице, например, wpdetect_logs, можно использовать такой пример:

function wpdetect_delete_old_db_logs() {
    global $wpdb;
    $table = $wpdb->prefix . 'wpdetect_logs';
    $date_limit = date('Y-m-d H:i:s', strtotime('-30 days'));
    $wpdb->query(
        $wpdb->prepare("DELETE FROM $table WHERE log_date < %s", $date_limit)
    );
}

add_action('wpdetect_daily_db_cleanup', 'wpdetect_delete_old_db_logs');

if (!wp_next_scheduled('wpdetect_daily_db_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpdetect_daily_db_cleanup');
}

Важно: перед удалением обязательно сделать резервную копию базы данных.

Как мониторить и анализировать логи без нагрузки на сайт

Рекомендуется использовать внешние сервисы и инструменты для централизованного хранения и анализа логов, например, Elastic Stack (ELK), Papertrail, Loggly. Для интеграции можно настроить отправку логов через плагины и код.

Для автоматизации можно настроить отправку логов в реальном времени по FTP, API или webhook, чтобы не перегружать сайт хранением большого объема данных.

Пример отправки логов в внешнюю систему через HTTP-запрос

function wpdetect_send_log_to_remote($log_message) {
    $url = 'https://example.com/api/logs';
    $args = [
        'body' => json_encode(['message' => $log_message, 'time' => current_time('mysql')]),
        'headers' => ['Content-Type' => 'application/json'],
        'timeout' => 5,
    ];
    wp_remote_post($url, $args);
}

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

Рекомендации по безопасности при работе с логами

Логи могут содержать чувствительную информацию — пароли, персональные данные, ошибки с путями к файлам. Чтобы защитить сайт:

Заключение

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

Для более продвинутого мониторинга рекомендуем изучить возможности плагина WP Activity Log, а для очистки и управления логами применять приведённые примеры кода с адаптацией под свои задачи.

Дополнительные инструменты и плагины вы всегда можете найти на WPSHOP.

Как автоматизировать удаление старого кеша в WordPress: практические методы и примеры кода
13.02.2026
Отладка проблем с переадресацией в WordPress: практические решения и примеры
23.12.2025
Автоматическое удаление старых медиафайлов в WordPress: как освободить место и улучшить производительность
10.01.2026
Как настроить автоматический сбор и удаление логов в WordPress
31.01.2026
Как установить автоматическое удаление спама в комментариях WordPress
11.12.2025