
# Beleženje

Queuety beleži vsak dogodek opravila in poteka dela v tabelo zbirke podatkov `queuety_logs`. Dnevniških datotek ni. Po vseh vnosih lahko poizvedujete prek PHP API in CLI.

## Vrste dogodkov

Vsak vnos v dnevnik ima vrsto dogodka iz enumeracije `LogEvent`:

| Dogodek | Opis |
|---|---|
| `started` | Izvajanje opravila se je začelo |
| `completed` | Opravilo se je uspešno zaključilo |
| `failed` | Poskus je sprožil izjemo in bo ponovljen (končni poskus beleži samo `buried`) |
| `buried` | Opravilo je izčrpalo vse poskuse ponovitve |
| `retried` | Opravilo je bilo načrtovano za ponovni poskus |
| `workflow_started` | Potek dela je bil odpremljen |
| `workflow_completed` | Vsi koraki poteka dela so se zaključili |
| `workflow_failed` | Korak poteka dela je trajno spodletel |
| `workflow_paused` | Potek dela je bil začasno ustavljen |
| `workflow_resumed` | Potek dela se je nadaljeval |
| `workflow_cancelled` | Potek dela je bil preklican |
| `workflow_rewound` | Potek dela je bil vrnjen na prejšnji korak |
| `workflow_forked` | Iz poteka dela je bil ustvarjen nov potek dela |
| `workflow_deadline_exceeded` | Potek dela je zamudil rok `must_complete_within()` |
| `debug` | Sporočilo na ravni razhroščevanja (ko je omogočen `QUEUETY_DEBUG`) |

## Polja dnevnika

Vsak vnos v dnevniku vsebuje:

| Polje | Opis |
|---|---|
| `id` | Samodejno povečevanje ID-ja |
| `event` | Niz vrste dogodka |
| `handler` | Ime obravnavalnika ali razred |
| `job_id` | Povezani ID opravila (lahko je prazen) |
| `workflow_id` | Povezani ID poteka dela (lahko je prazen) |
| `step_index` | Indeks koraka poteka dela (lahko je prazen) |
| `attempt` | Številka poskusa |
| `duration_ms` | Trajanje izvajanja v milisekundah |
| `error_message` | Sporočilo o napaki, če je prišlo do napake |
| `created_at` | Časovni žig |

## Poizvedovanje po dnevnikih prek 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 );
```

## Poizvedovanje po dnevnikih prek 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
```

## Hramba dnevnikov

Dnevniki se hranijo, dokler jih ne izbrišete. Konstanto `QUEUETY_LOG_RETENTION_DAYS` prebere `Config::log_retention_days()`, vendar je za zdaj nič ne uporablja, zato ne izbriše ničesar ([#15](https://github.com/inline0/queuety/issues/15)). Podukazu `wp queuety log purge` prav tako ni mogoče dostopati ([#11](https://github.com/inline0/queuety/issues/11)).

Izbrišite jih prek PHP, na primer z lastnim načrtovanim opravilom ali z `wp eval`:

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