Uecko_ERP_FactuGES_sync/app/config/setup_logger.py
2025-11-30 19:28:44 +01:00

56 lines
1.7 KiB
Python

import logging
import sys
import os
from logging.handlers import RotatingFileHandler
from pathlib import Path
def create_logger(
name: str = "factuges-sync",
*,
level: int = logging.INFO,
log_path: str | None = None,
) -> logging.Logger:
"""
Crea un logger:
- SIEMPRE stdout (Docker-friendly)
- SOLO EN PRODUCCIÓN añade RotatingFileHandler si log_path no es None
"""
logger = logging.getLogger(name)
logger.setLevel(level)
# No duplicar handlers si ya existe el logger
if logger.handlers:
return logger
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
# ------------------------------------------------------------------
# 1) Consola → SIEMPRE (para docker logs)
# ------------------------------------------------------------------
h_console = logging.StreamHandler(sys.stdout)
h_console.setFormatter(formatter)
logger.addHandler(h_console)
# ------------------------------------------------------------------
# 2) Fichero → SOLO en prod + si se define log_path
# ------------------------------------------------------------------
environment = os.getenv("ENV", "development")
if environment == "production" and log_path:
Path(log_path).parent.mkdir(parents=True, exist_ok=True)
h_file = RotatingFileHandler(
log_path,
maxBytes=5 * 1024 * 1024,
backupCount=15,
encoding="utf8",
)
h_file.setFormatter(formatter)
logger.addHandler(h_file)
return logger
# logger "global" ya creado
logger = create_logger()