
# Registravimas

Queuety registruoja kiekvieną užduoties ir proceso įvykį duomenų bazės lentelėje `queuety_logs`. Žurnalų failų nėra. Visus įrašus galima pateikti užklausomis per PHP API ir CLI.

## Įvykių tipai

Kiekvienas žurnalo įrašas turi įvykio tipą iš `LogEvent` enum:

| Įvykis | Aprašymas |
|---|---|
| `started` | Pradėtas užduoties vykdymas |
| `completed` | Užduotis sėkmingai baigta |
| `failed` | Bandymo metu įvyko išimtis; bandymas bus kartojamas (galutiniame bandyme registruojamas tik `buried`) |
| `buried` | Išnaudoti visi užduoties pakartojimo bandymai |
| `retried` | Suplanuotas pakartotinis užduoties bandymas |
| `workflow_started` | Išsiųstas procesas |
| `workflow_completed` | Baigti visi proceso veiksmai |
| `workflow_failed` | Proceso veiksmas galutinai nepavyko |
| `workflow_paused` | Procesas pristabdytas |
| `workflow_resumed` | Procesas tęsiamas |
| `workflow_cancelled` | Procesas atšauktas |
| `workflow_rewound` | Procesas grąžintas prie ankstesnio veiksmo |
| `workflow_forked` | Proceso pagrindu sukurtas naujas procesas |
| `workflow_deadline_exceeded` | Praleistas proceso `must_complete_within()` terminas |
| `debug` | Derinimo lygio pranešimas (kai įjungta `QUEUETY_DEBUG`) |

## Žurnalo laukai

Kiekviename žurnalo įraše yra:

| Laukas | Aprašymas |
|---|---|
| `id` | Automatiškai didėjantis ID |
| `event` | Įvykio tipo eilutė |
| `handler` | Apdorojimo funkcijos pavadinimas arba klasė |
| `job_id` | Susietos užduoties ID (gali būti nulinis) |
| `workflow_id` | Susieto proceso ID (gali būti nulinis) |
| `step_index` | Proceso veiksmo indeksas (gali būti nulinis) |
| `attempt` | Bandymo numeris |
| `duration_ms` | Vykdymo trukmė milisekundėmis |
| `error_message` | Klaidos pranešimas, jei įvyko klaida |
| `created_at` | Laiko žyma |

## Žurnalų užklausos per 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 );
```

## Žurnalų užklausos per 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
```

## Žurnalų saugojimo trukmė

Žurnalai saugomi, kol juos išvalote. Konstantą `QUEUETY_LOG_RETENTION_DAYS` nuskaito `Config::log_retention_days()`, tačiau ji dar niekur nenaudojama, todėl nieko neišvalo ([#15](https://github.com/inline0/queuety/issues/15)). Taip pat negalima pasiekti poįsakio `wp queuety log purge` ([#11](https://github.com/inline0/queuety/issues/11)).

Išvalykite naudodami PHP, pavyzdžiui, savo suplanuotoje užduotyje arba su `wp eval`:

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