Ведение журналов
Queuety записывает каждое событие задания и рабочего процесса в таблицу базы данных queuety_logs. Файлы журналов не создаются. Все записи можно запрашивать через PHP API и CLI.
Типы событий
У каждой записи журнала есть тип события из перечисления LogEvent:
| Событие | Описание |
|---|---|
started |
Выполнение задания начато |
completed |
Задание успешно завершено |
failed |
Попытка завершилась исключением и будет повторена (последняя попытка записывает только buried) |
buried |
Задание исчерпало все попытки повтора |
retried |
Задание запланировано для повтора |
workflow_started |
Рабочий процесс запущен |
workflow_completed |
Все этапы рабочего процесса завершены |
workflow_failed |
Этап рабочего процесса окончательно завершился с ошибкой |
workflow_paused |
Рабочий процесс приостановлен |
workflow_resumed |
Работа рабочего процесса возобновлена |
workflow_cancelled |
Рабочий процесс отменён |
workflow_rewound |
Рабочий процесс возвращён к более раннему этапу |
workflow_forked |
На основе рабочего процесса создан новый рабочий процесс |
workflow_deadline_exceeded |
Пропущен срок must_complete_within() рабочего процесса |
debug |
Сообщение уровня отладки (если включён режим QUEUETY_DEBUG) |
Поля журнала
Каждая запись журнала содержит:
| Поле | Описание |
|---|---|
id |
Автоматически увеличиваемый идентификатор |
event |
Строка типа события |
handler |
Имя или класс обработчика |
job_id |
Идентификатор связанного задания (может быть пустым) |
workflow_id |
Идентификатор связанного рабочего процесса (может быть пустым) |
step_index |
Индекс этапа рабочего процесса (может быть пустым) |
attempt |
Номер попытки |
duration_ms |
Длительность выполнения в миллисекундах |
error_message |
Сообщение об ошибке при сбое |
created_at |
Метка времени |
Запрос журналов через PHP
PHP
$logger = Queuety::logger();
// Logs for a specific job
$logs = $logger->for_job( 42 );
// Logs for a specific workflow
$logs = $logger->for_workflow( 7 );
// Logs for a specific handler
$logs = $logger->for_handler( 'send_email', 50 );
// Logs for a specific event type
$logs = $logger->for_event( \Queuety\Enums\LogEvent::Failed, 50 );
// Logs since a datetime
$logs = $logger->since( new \DateTimeImmutable( '-1 hour' ), 100 );
Запрос журналов через CLI
Командная оболочка
# Recent logs (last 24 hours)
wp queuety log
# Logs for a specific job
wp queuety log --job=42
# Logs for a specific workflow
wp queuety log --workflow=7
# Logs for a handler
wp queuety log --handler=send_email
# Logs for an event type
wp queuety log --event=failed
# Logs since a datetime
wp queuety log --since="2025-01-01 00:00:00"
# Custom limit and format
wp queuety log --limit=100 --format=json
Хранение журналов
Журналы хранятся, пока вы не очистите их. Константа QUEUETY_LOG_RETENTION_DAYS считывается компонентом Config::log_retention_days(), но пока нигде не используется, поэтому ничего не удаляет (#15). Подкоманду wp queuety log purge также нельзя вызвать (#11).
Очистите журналы из PHP, например с помощью собственной запланированной задачи или через wp eval:
PHP
$count = Queuety::logger()->purge( 30 );