"""
Nom du script : logging.py
Chemin : /gitlab-bridge/app/core/logging.py
Description : Configuration du logging JSON applicatif sans fuite de secrets.
Options éventuelles : Aucune.
Exemples d'utilisation : Appeler `configure_logging()` au démarrage.
Prérequis : Python 3.11+, python-json-logger.
Auteur : Sylvain SCATTOLINI
Date de création / modification : 2026-03-25
Version : 1.1
"""

from __future__ import annotations

import logging
import sys

from pythonjsonlogger.json import JsonFormatter


class SafeJsonFormatter(JsonFormatter):
    """Formatter JSON minimal, prêt pour ingestion par un collecteur de logs."""

    def add_fields(self, log_record: dict, record: logging.LogRecord, message_dict: dict) -> None:
        super().add_fields(log_record, record, message_dict)
        log_record.setdefault('level', record.levelname)
        log_record.setdefault('logger', record.name)


def configure_logging() -> None:
    """Initialise un logging JSON simple et sûr."""
    root_logger = logging.getLogger()
    if root_logger.handlers:
        return

    handler = logging.StreamHandler(sys.stdout)
    handler.setFormatter(SafeJsonFormatter('%(asctime)s %(levelname)s %(name)s %(message)s'))
    root_logger.addHandler(handler)
    root_logger.setLevel(logging.INFO)
