Пропустить контент
Купить

Обзор

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

Архитектура логирования

Основные компоненты

  • ConsoleLog: Основной класс логирования
  • LoggerTrait: Трейт с методами для разных уровней логирования
  • Хранилище: Файлы логов в директории uploads
  • Интерфейс: Админ-панель для просмотра логов

Уровни логирования

Система использует стандартные уровни логирования PSR-3:

  • EMERGENCY: Система неработоспособна
  • ALERT: Требуется немедленное вмешательство
  • CRITICAL: Критические ошибки
  • ERROR: Ошибки выполнения
  • WARNING: Предупреждения
  • NOTICE: Уведомления
  • INFO: Информационные сообщения
  • DEBUG: Отладочная информация

Хранение логов

Структура файлов

Логи сохраняются в директории /wp-content/uploads/iiko/:

/wp-content/uploads/iiko/
├── 01122024_abc123def.log  # Лог за 01.12.2024
├── 02122024_abc123def.log  # Лог за 02.12.2024
└── ...

Формат имени файла

DDMMYYYY_HASH.log

  • DDMMYYYY: Дата в формате день-месяц-год
  • HASH: Уникальный хеш для безопасности

Формат записи лога

log
[01.12.2024 14:30:25.123456 UTC][Info]: Сообщение лога
Stack trace (если включено):
#3 iiko\background_process\test() called at [/path/to/file.php:123]

Настройки логирования

Основные настройки

В админ-панели Woo2iiko → Настройки → Логи:

  • Включить логирование: debug
  • Отправка ошибок на email: send_error_to_mail
  • Сохранение в базу данных: save_logs_to_db
  • Запись трассировки: write_trace

Режим разработчика

При определении константы IIKO_DEBUG:

  • Логи сохраняются в /wp-content/debug.log
  • Более подробная информация
  • Консольные сообщения в браузере
php
// В wp-config.php
define('IIKO_DEBUG', true);

Просмотр логов

Через админ-панель

  1. Перейдите в Инструменты → Логи Woo2iiko
  2. Выберите дату лога
  3. Просмотрите содержимое или скачайте файл

Доступ к файлам

Логи доступны по защищенным ссылкам:

  • Просмотр: ?hash=abc123&date=01122024&view=1
  • Скачивание: ?hash=abc123&date=01122024

Фильтры и поиск

  • Фильтрация по дате
  • Поиск по содержимому
  • Группировка по уровню

Использование в коде

Базовое логирование

php
// Простое сообщение
console_log('Сообщение в лог', 'info');

// С данными
console_log(['user_id' => 123, 'action' => 'login'], 'info');

// Ошибка
console_log(new Exception('Ошибка подключения'), 'error');

Использование LoggerTrait

php
use iiko\debugger\LoggerTrait;

class MyClass {
    use LoggerTrait;
    
    public function test() {
        $this->info('Начало операции');
        $this->error('Произошла ошибка');
        $this->debug('Отладочная информация');
    }
}

Логирование исключений

php
try {
    // Код, который может вызвать исключение
    $this->api->sendRequest($data);
} catch (Exception $e) {
    console_log($e, 'error');
}

Мониторинг и оповещения

Email оповещения

При включенной настройке send_error_to_mail:

  • Критические ошибки отправляются на email администратора
  • Ограничение: не более одного письма в час на тип ошибки

Telegram оповещения

Через интеграцию с Telegram ботом:

  • Оперативные уведомления о важных событиях
  • Настраивается отдельно от email

Консоль браузера

Для администраторов в браузере:

  • Отладочные сообщения в консоли
  • Только при включенном режиме разработчика

Очистка логов

Автоматическая очистка

Фоновый процесс BackgroundRemoveLogs:

  • Удаляет логи старше 7 дней
  • Запускается по расписанию

Ручная очистка

Через админ-панель:

  • Выберите логи для удаления
  • Подтвердите действие
  • Логи удаляются без возможности восстановления

Резервное копирование

Рекомендуется:

  • Скачивать важные логи перед очисткой
  • Настраивать внешнее хранилище
  • Регулярно архивировать логи

Анализ логов

Поиск проблем

log
[ERROR]: API request failed: Connection timeout
[WARNING]: Product sync skipped: no changes detected
[INFO]: Import completed: 150 products updated

Метрики производительности

Логи содержат статистику:

  • Время выполнения операций
  • Использование памяти
  • Количество SQL запросов
  • Эффективность кеширования

Типичные паттерны

  • Частые таймауты: Проблемы с API iiko
  • Ошибки валидации: Некорректные данные
  • Предупреждения о памяти: Недостаточно ресурсов

Устранение неполадок

Проблема: Логи не пишутся

Решения:

  • Проверьте права на запись в /wp-content/uploads/iiko/
  • Убедитесь, что логирование включено в настройках
  • Проверьте наличие свободного места на диске

Проблема: Логи растут слишком быстро

Решения:

  • Уменьшите уровень логирования
  • Отключите запись трассировки
  • Настройте автоматическую очистку

Проблема: Ошибки в логах

Решения:

  • Анализируйте stack trace
  • Проверьте конфигурацию API iiko
  • Обновите версию плагина
  • Проверьте совместимость с WordPress

Лучшие практики

Настройка для продакшена

php
// Рекомендуемые настройки
iiko_update_option('debug', 'yes');
// iiko_update_option('send_error_to_mail', 'yes');
// iiko_update_option('write_trace', 'no');
// iiko_update_option('save_logs_to_db', 'no');

Мониторинг

  • Регулярно просматривайте логи на наличие ошибок
  • Настройте алерты на критические проблемы
  • Анализируйте паттерны для оптимизации

Безопасность

  • Логи содержат чувствительную информацию
  • Ограничивайте доступ к файлам логов
  • Регулярно очищайте старые логи
  • Не храните логи в публично доступных директориях

API для разработчиков

Создание собственного логгера

php
class CustomLogger {
    use LoggerTrait;
    
    public function customLog($message, $level = 'info') {
        $this->log($level, '[Custom] ' . $message);
    }
}

Хуки для расширения

php
// Хук перед записью в лог
do_action('iiko_before_log_write', $message, $level);

// Хук после очистки логов
do_action('iiko_after_logs_cleanup', $deleted_files);

// Фильтр сообщения лога
add_filter('iiko_log_message', function($message) {
    return '[PREFIX] ' . $message;
});

Интеграция с внешними системами

php
// Отправка в внешний сервис
function send_to_external_service($message, $level) {
    if ($level === 'error') {
        // Отправка в Slack, Sentry и т.д.
    }
}
add_action('iiko_before_log_write', 'send_to_external_service', 10, 2);

Рекомендация

Включайте логирование только при необходимости диагностики проблем. Для продакшена оставляйте минимальный уровень логирования для отслеживания критических ошибок.

WOO2IIKO © 2019 - 2026 Алексей Тихомиров.