Обзор
Плагин 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: Уникальный хеш для безопасности
Формат записи лога
[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 - Более подробная информация
- Консольные сообщения в браузере
// В wp-config.php
define('IIKO_DEBUG', true);Просмотр логов
Через админ-панель
- Перейдите в Инструменты → Логи Woo2iiko
- Выберите дату лога
- Просмотрите содержимое или скачайте файл
Доступ к файлам
Логи доступны по защищенным ссылкам:
- Просмотр:
?hash=abc123&date=01122024&view=1 - Скачивание:
?hash=abc123&date=01122024
Фильтры и поиск
- Фильтрация по дате
- Поиск по содержимому
- Группировка по уровню
Использование в коде
Базовое логирование
// Простое сообщение
console_log('Сообщение в лог', 'info');
// С данными
console_log(['user_id' => 123, 'action' => 'login'], 'info');
// Ошибка
console_log(new Exception('Ошибка подключения'), 'error');Использование LoggerTrait
use iiko\debugger\LoggerTrait;
class MyClass {
use LoggerTrait;
public function test() {
$this->info('Начало операции');
$this->error('Произошла ошибка');
$this->debug('Отладочная информация');
}
}Логирование исключений
try {
// Код, который может вызвать исключение
$this->api->sendRequest($data);
} catch (Exception $e) {
console_log($e, 'error');
}Мониторинг и оповещения
Email оповещения
При включенной настройке send_error_to_mail:
- Критические ошибки отправляются на email администратора
- Ограничение: не более одного письма в час на тип ошибки
Telegram оповещения
Через интеграцию с Telegram ботом:
- Оперативные уведомления о важных событиях
- Настраивается отдельно от email
Консоль браузера
Для администраторов в браузере:
- Отладочные сообщения в консоли
- Только при включенном режиме разработчика
Очистка логов
Автоматическая очистка
Фоновый процесс BackgroundRemoveLogs:
- Удаляет логи старше 7 дней
- Запускается по расписанию
Ручная очистка
Через админ-панель:
- Выберите логи для удаления
- Подтвердите действие
- Логи удаляются без возможности восстановления
Резервное копирование
Рекомендуется:
- Скачивать важные логи перед очисткой
- Настраивать внешнее хранилище
- Регулярно архивировать логи
Анализ логов
Поиск проблем
[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
Лучшие практики
Настройка для продакшена
// Рекомендуемые настройки
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 для разработчиков
Создание собственного логгера
class CustomLogger {
use LoggerTrait;
public function customLog($message, $level = 'info') {
$this->log($level, '[Custom] ' . $message);
}
}Хуки для расширения
// Хук перед записью в лог
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;
});Интеграция с внешними системами
// Отправка в внешний сервис
function send_to_external_service($message, $level) {
if ($level === 'error') {
// Отправка в Slack, Sentry и т.д.
}
}
add_action('iiko_before_log_write', 'send_to_external_service', 10, 2);Рекомендация
Включайте логирование только при необходимости диагностики проблем. Для продакшена оставляйте минимальный уровень логирования для отслеживания критических ошибок.