Logging¶
milpa usa Loguru. El logging se configura al arrancar (HTTP y Celery), de forma que worker, beat y API escriban igual. Celery no secuestra el root logger: Loguru lo maneja.
Usar el logger¶
from loguru import logger
logger.info("Procesando pedido {id}", id=pedido_id)
logger.warning("Reintento {n}/{max}", n=intento, max=3)
logger.error("Falló el PAC: {body}", body=respuesta)
Usa el estilo de Loguru ({campo} + kwargs), no f-strings, para que los campos queden
estructurados.
Configuración¶
| Setting | Default | Para qué |
|---|---|---|
LOG_LEVEL |
INFO |
DEBUG, INFO, WARNING, ERROR, CRITICAL. |
LOG_JSON |
false |
true añade salida JSON Lines en logs/app.jsonl. |
LOG_DIR |
logs |
Directorio de logs. |
Con LOG_JSON=true, además de la consola/archivo legible, cada línea se escribe como un
objeto JSON por evento (apto para parseo automático).
Logs por cron (output=)¶
Un @cron_task(output="reminders") rutea los logs de esa corrida a un archivo
propio con rotación diaria y retención: logs/cron_reminders.log. Así separas la salida
de cada cron sin mezclarla con el log general. Ver Cron.
Dónde salen los logs¶
jornal serve(API): consola +logs/.jornal queue work(worker): la salida de las tasks sale en la terminal del worker y enlogs/.- Crons con
output: además, su archivo dedicadologs/cron_<output>.log.
El directorio logs/ está en .gitignore (no se versiona).