
# Logimine

Queuety logib iga töö ja töövoo sündmuse andmebaasi tabelisse `queuety_logs`. Logifaile pole. Kõiki kirjeid saab pärida PHP API ja CLI kaudu.

## Sündmuste tüübid

Igal logikirjel on sündmuse tüüp enumist `LogEvent`:

| Sündmus | Kirjeldus |
|---|---|
| `started` | Töö täitmine algas |
| `completed` | Töö lõpetati edukalt |
| `failed` | Katse ebaõnnestus ja seda proovitakse uuesti (viimase katse puhul logitakse ainult `buried`) |
| `buried` | Töö kõik korduskatsed ammendusid |
| `retried` | Töö ajastati korduskatseks |
| `workflow_started` | Töövoog saadeti täitmisele |
| `workflow_completed` | Kõik töövoo sammud said valmis |
| `workflow_failed` | Töövoo samm ebaõnnestus jäädavalt |
| `workflow_paused` | Töövoog peatati |
| `workflow_resumed` | Töövoog jätkus |
| `workflow_cancelled` | Töövoog tühistati |
| `workflow_rewound` | Töövoog viidi tagasi varasemale sammule |
| `workflow_forked` | Töövoost loodi haru uueks töövooguks |
| `workflow_deadline_exceeded` | Töövoo `must_complete_within()` tähtaeg möödus |
| `debug` | Silumise taseme teade (kui `QUEUETY_DEBUG` on lubatud) |

## Logiväljad

Iga logikirje sisaldab järgmist:

| Väli | Kirjeldus |
|---|---|
| `id` | Automaatselt suurenev ID |
| `event` | Sündmuse tüübi string |
| `handler` | Töötleja nimi või klass |
| `job_id` | Seotud töö ID (võib olla tühi) |
| `workflow_id` | Seotud töövoo ID (võib olla tühi) |
| `step_index` | Töövoo sammu indeks (võib olla tühi) |
| `attempt` | Katse number |
| `duration_ms` | Täitmise kestus millisekundites |
| `error_message` | Tõrke korral veateade |
| `created_at` | Ajatempel |

## Logide pärimine PHP kaudu

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

## Logide pärimine CLI kaudu

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

## Logide säilitamine

Logisid hoitakse seni, kuni need kustutate. Konstant `QUEUETY_LOG_RETENTION_DAYS` loetakse `Config::log_retention_days()` poolt, kuid seda veel ei kasutata, seega ei kustutata midagi ([#15](https://github.com/inline0/queuety/issues/15)). Ka alamkäsku `wp queuety log purge` ei saa kasutada ([#11](https://github.com/inline0/queuety/issues/11)).

Kustutage andmed PHP kaudu, näiteks oma ajastatud toimingust või käsuga `wp eval`:

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