
# Jurnalizare

Queuety înregistrează fiecare eveniment asociat sarcinilor și fluxurilor de lucru în tabelul `queuety_logs` din baza de date. Nu există fișiere jurnal. Toate înregistrările pot fi interogate prin PHP API și CLI.

## Tipuri de evenimente

Fiecare înregistrare din jurnal are un tip de eveniment din enumerarea `LogEvent`:

| Eveniment | Descriere |
|---|---|
| `started` | A început execuția sarcinii |
| `completed` | Sarcina s-a încheiat cu succes |
| `failed` | O încercare a generat o excepție și va fi reluată (încercarea finală înregistrează numai `buried`) |
| `buried` | Sarcina a epuizat toate încercările de reluare |
| `retried` | Sarcina a fost programată pentru reluare |
| `workflow_started` | Fluxul de lucru a fost lansat |
| `workflow_completed` | Toți pașii fluxului de lucru s-au încheiat |
| `workflow_failed` | Pasul fluxului de lucru a eșuat definitiv |
| `workflow_paused` | Fluxul de lucru a fost suspendat |
| `workflow_resumed` | Fluxul de lucru a fost reluat |
| `workflow_cancelled` | Fluxul de lucru a fost anulat |
| `workflow_rewound` | Fluxul de lucru a revenit la un pas anterior |
| `workflow_forked` | Fluxul de lucru a fost ramificat într-un flux nou |
| `workflow_deadline_exceeded` | Fluxul de lucru a depășit termenul-limită `must_complete_within()` |
| `debug` | Mesaj de nivel depanare (când `QUEUETY_DEBUG` este activat) |

## Câmpurile jurnalului

Fiecare înregistrare din jurnal conține:

| Câmp | Descriere |
|---|---|
| `id` | ID cu incrementare automată |
| `event` | Șirul tipului de eveniment |
| `handler` | Numele handlerului sau al clasei |
| `job_id` | ID-ul sarcinii asociate (poate fi nul) |
| `workflow_id` | ID-ul fluxului de lucru asociat (poate fi nul) |
| `step_index` | Indexul pasului fluxului de lucru (poate fi nul) |
| `attempt` | Numărul încercării |
| `duration_ms` | Durata execuției în milisecunde |
| `error_message` | Mesajul de eroare, dacă a eșuat |
| `created_at` | Marcaj temporal |

## Interogarea jurnalelor prin 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 );
```

## Interogarea jurnalelor prin 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
```

## Păstrarea jurnalelor

Jurnalele sunt păstrate până când le ștergeți. Constanta `QUEUETY_LOG_RETENTION_DAYS` este citită de `Config::log_retention_days()`, dar momentan nu o folosește nimic, așa că nu șterge nimic ([#15](https://github.com/inline0/queuety/issues/15)). Nici subcomanda `wp queuety log purge` nu poate fi accesată ([#11](https://github.com/inline0/queuety/issues/11)).

Ștergeți din PHP, de exemplu din propria sarcină programată sau cu `wp eval`:

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