import json import logging from datetime import UTC, datetime from app.core.config import get_settings class JsonFormatter(logging.Formatter): def format(self, record: logging.LogRecord) -> str: payload = { "timestamp": datetime.now(UTC).isoformat(), "level": record.levelname, "logger": record.name, "message": record.getMessage(), } return json.dumps(payload, ensure_ascii=True) def configure_logging() -> None: settings = get_settings() root = logging.getLogger() if root.handlers: return root.setLevel(settings.log_level.upper()) console = logging.StreamHandler() console.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s")) root.addHandler(console) json_handler = logging.FileHandler(settings.log_dir / "tuxdmx.json.log", encoding="utf-8") json_handler.setFormatter(JsonFormatter()) root.addHandler(json_handler)