Skip to content

fix: restore simplified logging config in main.py#41

Merged
Kaiohz merged 1 commit into
mainfrom
fix/simplify-logging-main
May 21, 2026
Merged

fix: restore simplified logging config in main.py#41
Kaiohz merged 1 commit into
mainfrom
fix/simplify-logging-main

Conversation

@Kaiohz
Copy link
Copy Markdown
Collaborator

@Kaiohz Kaiohz commented May 21, 2026

Restore the logging.basicConfig() that was accidentally reverted. Removes the verbose LOG_CONFIG dict in favor of a single basicConfig call.

@Kaiohz
Copy link
Copy Markdown
Collaborator Author

Kaiohz commented May 21, 2026

🔍 Code Review — PR #41: fix: restore simplified logging config in main.py

Score : 7/10


✅ Points positifs

  1. Simplification welcome — Remplacer le dict LOG_CONFIG (26 lignes) par un basicConfig() (4 lignes), c'est un net gain de lisibilité. Le logging applicatif n'a pas besoin d'une config dictConfig pour ce projet.

  2. Utilisation de app_config.UVICORN_LOG_LEVEL — Le niveau de log est maintenant tiré de la config existante au lieu d'être hardcodé à "INFO". C'est plus flexible et cohérent avec le reste de la config.

  3. Format de log amélioré — Le passage de %(asctime)s %(levelname)-8s [%(name)s] %(message)s à %(asctime)s | %(levelname)-8s | %(name)s | %(message)s avec datefmt rend les logs plus lisibles et parsables.

  4. Suppression de log_config=LOG_CONFIG dans uvicorn.run() — Cohérent : si on utilise basicConfig(), on ne doit pas re-passer un dictConfig à uvicorn.

  5. Réorganisation des importsfrom alembic.config import Config déplacé après from alembic import command, ce qui est plus logique et suit les conventions isort.


⚠️ Points d'attention / Améliorations

  1. Comportement subtil avec uvicornbasicConfig() configure le root logger, mais uvicorn démarre ses propres loggers (uvicorn, uvicorn.error, uvicorn.access) avant que main.py soit importé en tant que module. Le dictConfig original fixait explicitement propagate: False sur ces loggers, ce qui évitait les logs dupliqués. Avec basicConfig(), si uvicorn a déjà configuré ses handlers, basicConfig() est un no-op (il ne configure rien si le root logger a déjà des handlers). À vérifier en production que les logs uvicorn ne sont pas doublonnés ou silencieux.

    Suggestion : Ajouter un force=True dans basicConfig() pour garantir que la config s'applique :

    logging.basicConfig(
        level=app_config.UVICORN_LOG_LEVEL.upper(),
        format="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S",
        force=True,
    )
  2. Perte du contrôle fin sur les loggers uvicorn — Le dictConfig permettait de configurer uvicorn.access à INFO séparément du root logger. Avec basicConfig(), tout passe par le root logger. Si on veut filtrer les access logs (très verbeux) sans toucher aux autres, ce n'est plus possible directement.

    Suggestion si besoin : Ajouter un filtre ou configurer les loggers uvicorn après basicConfig() :

    logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
  3. Import logging.config supprimé — OK car plus utilisé, mais vérifier qu'aucun autre module ne l'importe indirectement via ce fichier.

  4. UVICORN_LOG_LEVEL.upper() — Bien que fonctionnel, .upper() est défensif (les niveaux de logging sont déjà case-insensitive en Python). Ce n'est pas un bug, mais c'est redondant. Pas bloquant.


📊 Résumé

Critère Note
Simplicité / Lisibilité ⭐⭐⭐⭐⭐
Cohérence avec la config ⭐⭐⭐⭐
Risque régression (logs uvicorn) ⭐⭐⭐
Correctness / edge cases ⭐⭐⭐

Verdict : Bon refactoring de simplification. Le risque principal est le comportement de basicConfig() face aux loggers uvicorn déjà initialisés. Je recommande d'ajouter force=True et de tester que les logs ne sont ni doublonnés ni silencieux en staging. Après ça, c'est un 👍.

@Kaiohz Kaiohz merged commit 5b5adcd into main May 21, 2026
1 check passed
@Kaiohz Kaiohz deleted the fix/simplify-logging-main branch May 21, 2026 16:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant