
# Günlük Kaydı

Queuety, her iş ve iş akışı olayını `queuety_logs` veritabanı tablosuna kaydeder. Günlük dosyası yoktur. Tüm kayıtlar PHP API ve CLI aracılığıyla sorgulanabilir.

## Olay türleri

Her günlük kaydının `LogEvent` enum'undan bir olay türü vardır:

| Olay | Açıklama |
|---|---|
| `started` | İş yürütmesi başladı |
| `completed` | İş başarıyla tamamlandı |
| `failed` | Bir deneme hata verdi ve yeniden denenecek (son deneme yalnızca `buried` kaydeder) |
| `buried` | İş tüm yeniden deneme girişimlerini tüketti |
| `retried` | İş yeniden denenmek üzere zamanlandı |
| `workflow_started` | İş akışı dağıtıldı |
| `workflow_completed` | Tüm iş akışı adımları tamamlandı |
| `workflow_failed` | İş akışı adımı kalıcı olarak başarısız oldu |
| `workflow_paused` | İş akışı duraklatıldı |
| `workflow_resumed` | İş akışı sürdürüldü |
| `workflow_cancelled` | İş akışı iptal edildi |
| `workflow_rewound` | İş akışı önceki bir adıma geri alındı |
| `workflow_forked` | İş akışı yeni bir iş akışına çatallandı |
| `workflow_deadline_exceeded` | İş akışının `must_complete_within()` son tarihi kaçırıldı |
| `debug` | Hata ayıklama düzeyi mesaj (`QUEUETY_DEBUG` etkin olduğunda) |

## Günlük alanları

Her günlük kaydı şunları içerir:

| Alan | Açıklama |
|---|---|
| `id` | Otomatik artan kimlik |
| `event` | Olay türü dizesi |
| `handler` | İşleyici adı veya sınıfı |
| `job_id` | İlişkili iş kimliği (boş olabilir) |
| `workflow_id` | İlişkili iş akışı kimliği (boş olabilir) |
| `step_index` | İş akışı adım dizini (boş olabilir) |
| `attempt` | Deneme numarası |
| `duration_ms` | Milisaniye cinsinden yürütme süresi |
| `error_message` | Başarısızlık durumunda hata mesajı |
| `created_at` | Zaman damgası |

## Günlükleri PHP üzerinden sorgulama

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

## Günlükleri CLI üzerinden sorgulama

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

## Günlük saklama süresi

Günlükler siz onları temizleyene kadar saklanır. `QUEUETY_LOG_RETENTION_DAYS` sabiti `Config::log_retention_days()` tarafından okunur ancak henüz kullanılmadığından hiçbir şeyi temizlemez ([#15](https://github.com/inline0/queuety/issues/15)). `wp queuety log purge` alt komutuna da erişilemez ([#11](https://github.com/inline0/queuety/issues/11)).

PHP üzerinden, örneğin kendi zamanlanmış görevinizden veya `wp eval` ile temizleyin:

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