
# Registro

Queuety registra cada evento de trabajo y flujo de trabajo en la tabla de base de datos `queuety_logs`. No hay archivos de registro. Todas las entradas se pueden consultar mediante PHP API y CLI.

## Tipos de eventos

Cada entrada de registro tiene un tipo de evento del enum `LogEvent`:

| Evento | Descripción |
|---|---|
| `started` | Se inició la ejecución del trabajo |
| `completed` | El trabajo se completó correctamente |
| `failed` | Un intento produjo una excepción y se volverá a intentar (el intento final solo registra `buried`) |
| `buried` | El trabajo agotó todos los intentos de reintento |
| `retried` | Se programó un reintento del trabajo |
| `workflow_started` | Se inició el flujo de trabajo |
| `workflow_completed` | Se completaron todos los pasos del flujo de trabajo |
| `workflow_failed` | El paso del flujo de trabajo falló de forma permanente |
| `workflow_paused` | Se pausó el flujo de trabajo |
| `workflow_resumed` | Se reanudó el flujo de trabajo |
| `workflow_cancelled` | Se canceló el flujo de trabajo |
| `workflow_rewound` | El flujo de trabajo volvió a un paso anterior |
| `workflow_forked` | El flujo de trabajo se bifurcó en uno nuevo |
| `workflow_deadline_exceeded` | El flujo de trabajo incumplió su plazo `must_complete_within()` |
| `debug` | Mensaje de nivel de depuración (cuando está habilitado `QUEUETY_DEBUG`) |

## Campos del registro

Cada entrada de registro contiene:

| Campo | Descripción |
|---|---|
| `id` | ID autoincremental |
| `event` | Cadena del tipo de evento |
| `handler` | Nombre del controlador o clase |
| `job_id` | ID del trabajo asociado (admite nulo) |
| `workflow_id` | ID del flujo de trabajo asociado (admite nulo) |
| `step_index` | Índice del paso del flujo de trabajo (admite nulo) |
| `attempt` | Número de intento |
| `duration_ms` | Duración de la ejecución en milisegundos |
| `error_message` | Mensaje de error, si se produjo un fallo |
| `created_at` | Marca de tiempo |

## Consultar registros mediante 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 );
```

## Consultar registros mediante 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
```

## Retención de registros

Los registros se conservan hasta que los elimine. `QUEUETY_LOG_RETENTION_DAYS` lee la constante `Config::log_retention_days()`, pero todavía no se usa, así que no elimina nada ([#15](https://github.com/inline0/queuety/issues/15)). Tampoco se puede acceder al subcomando `wp queuety log purge` ([#11](https://github.com/inline0/queuety/issues/11)).

Elimine los registros desde PHP, por ejemplo, con su propia tarea programada o con `wp eval`:

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