ログ記録
Queuetyはすべてのジョブとワークフローのイベントをqueuety_logsデータベーステーブルに記録します。ログファイルはありません。すべてのエントリーはPHPAPIと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 |
自動インクリメントID |
event |
イベントタイプの文字列 |
handler |
ハンドラー名またはクラス |
job_id |
関連するジョブID(null可) |
workflow_id |
関連するワークフローID(null可) |
step_index |
ワークフローのステップ番号(null可) |
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
ログの保持
ログは消去するまで保持されます。Config::log_retention_days()はQUEUETY_LOG_RETENTION_DAYS定数を読み取りますが、まだ何も使用していないため、ログは消去されません(#15)。また、wp queuety log purgeサブコマンドも実行できません(#11)。
たとえば、スケジュールされたタスクやwp evalを使って、PHPから消去します:
PHP
$count = Queuety::logger()->purge( 30 );