Перейти к содержимому

Ведение журналов

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 );