Przejdź do treści

Rejestrowanie zdarzeń

Queuety zapisuje każde zdarzenie zadania i przepływu pracy w tabeli bazy danych queuety_logs. Nie ma plików dziennika. Wszystkie wpisy można wyszukiwać za pomocą PHP API i CLI.

Typy zdarzeń

Każdy wpis dziennika ma typ zdarzenia z wyliczenia LogEvent:

Zdarzenie Opis
started Rozpoczęto wykonywanie zadania
completed Zadanie zakończono pomyślnie
failed Wystąpił wyjątek podczas próby, która zostanie ponowiona (ostatnia próba zapisuje tylko buried)
buried Wykorzystano wszystkie próby ponowienia zadania
retried Zaplanowano ponowienie zadania
workflow_started Uruchomiono przepływ pracy
workflow_completed Zakończono wszystkie kroki przepływu pracy
workflow_failed Krok przepływu pracy zakończył się nieodwracalnym błędem
workflow_paused Wstrzymano przepływ pracy
workflow_resumed Wznowiono przepływ pracy
workflow_cancelled Anulowano przepływ pracy
workflow_rewound Cofnięto przepływ pracy do wcześniejszego kroku
workflow_forked Rozgałęziono przepływ pracy, tworząc nowy przepływ
workflow_deadline_exceeded Upłynął termin must_complete_within() przepływu pracy
debug Komunikat na poziomie debugowania (gdy włączono QUEUETY_DEBUG)

Pola dziennika

Każdy wpis dziennika zawiera:

Pole Opis
id Automatycznie zwiększany identyfikator
event Ciąg znaków określający typ zdarzenia
handler Nazwa lub klasa obsługi
job_id Powiązany identyfikator zadania (może mieć wartość null)
workflow_id Powiązany identyfikator przepływu pracy (może mieć wartość null)
step_index Indeks kroku przepływu pracy (może mieć wartość null)
attempt Numer próby
duration_ms Czas wykonania w milisekundach
error_message Komunikat o błędzie, jeśli wystąpił błąd
created_at Sygnatura czasowa

Wyszukiwanie dzienników za pomocą 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 );

Wyszukiwanie dzienników za pomocą CLI

Powłoka
# 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

Przechowywanie dzienników

Dzienniki są przechowywane do czasu ich usunięcia. Stałą QUEUETY_LOG_RETENTION_DAYS odczytuje Config::log_retention_days(), ale na razie nic z niej nie korzysta, więc nie usuwa ona żadnych danych (#15). Nie można też wywołać podpolecenia wp queuety log purge (#11).

Usuwaj dane za pomocą PHP, na przykład z własnego zaplanowanego zadania lub polecenia wp eval:

PHP
$count = Queuety::logger()->purge( 30 );