
# Žurnalēšana

Queuety reģistrē katru uzdevuma un darbplūsmas notikumu datubāzes tabulā `queuety_logs`. Žurnālfailu nav. Visus ierakstus var vaicāt, izmantojot PHP API un CLI.

## Notikumu veidi

Katram žurnāla ierakstam ir notikuma veids no uzskaitījuma `LogEvent`:

| Notikums | Apraksts |
|---|---|
| `started` | Sākta uzdevuma izpilde |
| `completed` | Uzdevums veiksmīgi pabeigts |
| `failed` | Izpildes mēģinājumā radās izņēmums; tas tiks atkārtots (pēdējais mēģinājums reģistrē tikai `buried`) |
| `buried` | Uzdevums izsmēlis visus atkārtotas izpildes mēģinājumus |
| `retried` | Uzdevumu ieplānots atkārtot |
| `workflow_started` | Darbplūsma izsūtīta |
| `workflow_completed` | Pabeigtas visas darbplūsmas darbības |
| `workflow_failed` | Darbplūsmas darbība neatgriezeniski neizdevās |
| `workflow_paused` | Darbplūsma apturēta |
| `workflow_resumed` | Darbplūsma atsākta |
| `workflow_cancelled` | Darbplūsma atcelta |
| `workflow_rewound` | Darbplūsma atritināta līdz iepriekšējai darbībai |
| `workflow_forked` | No darbplūsmas izveidota jauna darbplūsma |
| `workflow_deadline_exceeded` | Darbplūsma nokavēja savu termiņu `must_complete_within()` |
| `debug` | Atkļūdošanas līmeņa ziņojums (ja iespējots `QUEUETY_DEBUG`) |

## Žurnāla lauki

Katrā žurnāla ierakstā ir:

| Lauks | Apraksts |
|---|---|
| `id` | Automātiski piešķirts ID |
| `event` | Notikuma veida virkne |
| `handler` | Apstrādātāja nosaukums vai klase |
| `job_id` | Saistītā uzdevuma ID (var būt null) |
| `workflow_id` | Saistītās darbplūsmas ID (var būt null) |
| `step_index` | Darbplūsmas darbības indekss (var būt null) |
| `attempt` | Mēģinājuma numurs |
| `duration_ms` | Izpildes ilgums milisekundēs |
| `error_message` | Kļūdas ziņojums, ja izpilde neizdevās |
| `created_at` | Laikspiedols |

## Žurnālu vaicājumi, izmantojot 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 );
```

## Žurnālu vaicājumi, izmantojot CLI

```bash
# 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
```

## Žurnālu saglabāšanas ilgums

Žurnāli tiek glabāti, līdz tos iztīrāt. Konstanti `QUEUETY_LOG_RETENTION_DAYS` nolasa `Config::log_retention_days()`, taču nekas to vēl neizmanto, tāpēc tā neko neiztīra ([#15](https://github.com/inline0/queuety/issues/15)). Arī apakškomandu `wp queuety log purge` nevar izsaukt ([#11](https://github.com/inline0/queuety/issues/11)).

Iztīriet tos ar PHP, piemēram, savā plānotajā uzdevumā vai izmantojot `wp eval`:

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