
# Регистриране

Queuety записва всяко събитие за задача и работен процес в таблицата `queuety_logs` на базата данни. Няма регистрационни файлове. Всички записи могат да се заявяват чрез PHP API и CLI.

## Типове събития

Всеки регистрационен запис има тип събитие от изброимия тип `LogEvent`:

| Събитие | Описание |
|---|---|
| `started` | Изпълнението на задачата е започнало |
| `completed` | Задачата е завършила успешно |
| `failed` | Опитът е довел до изключение и ще бъде повторен (при последния опит се записва само `buried`) |
| `buried` | Изчерпани са всички опити за повторно изпълнение на задачата |
| `retried` | Задачата е насрочена за повторен опит |
| `workflow_started` | Работният процес е изпратен за изпълнение |
| `workflow_completed` | Всички стъпки на работния процес са завършени |
| `workflow_failed` | Стъпка на работния процес е окончателно неуспешна |
| `workflow_paused` | Работният процес е поставен на пауза |
| `workflow_resumed` | Работният процес е възобновен |
| `workflow_cancelled` | Работният процес е отменен |
| `workflow_rewound` | Работният процес е върнат към предишна стъпка |
| `workflow_forked` | Работният процес е разклонен в нов работен процес |
| `workflow_deadline_exceeded` | Работният процес е пропуснал крайния си срок `must_complete_within()` |
| `debug` | Съобщение за отстраняване на грешки (когато е включено `QUEUETY_DEBUG`) |

## Полета на регистрационните записи

Всеки регистрационен запис съдържа:

| Поле | Описание |
|---|---|
| `id` | Автоматично увеличаващ се идентификатор |
| `event` | Низ за типа на събитието |
| `handler` | Име или клас на обработчика |
| `job_id` | Идентификатор на свързаната задача (може да е null) |
| `workflow_id` | Идентификатор на свързания работен процес (може да е null) |
| `step_index` | Индекс на стъпката в работния процес (може да е null) |
| `attempt` | Номер на опита |
| `duration_ms` | Продължителност на изпълнението в милисекунди |
| `error_message` | Съобщение за грешка при неуспех |
| `created_at` | Времеви печат |

## Заявяване на регистрационни записи чрез 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 );
```

## Заявяване на регистрационни записи чрез 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
```

## Съхранение на регистрационните записи

Регистрационните записи се пазят, докато не ги изчистите. Константата `QUEUETY_LOG_RETENTION_DAYS` се чете от `Config::log_retention_days()`, но все още не се използва, затова не изтрива нищо ([#15](https://github.com/inline0/queuety/issues/15)). Подкомандата `wp queuety log purge` също не може да бъде извикана ([#11](https://github.com/inline0/queuety/issues/11)).

Изчистете ги от PHP, например от собствената си планирана задача или с `wp eval`:

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