grimboite/articles/dev/python-logging.md

1.4 KiB

Python Logging

Contrairement à d'autres langages (C#, Java, ...?), Python embarque un module permettant de logger des actions. Cela a été décrit dans la PEP-282. Sauf que, suivant qu'on soit dans un environnement de tests ou un environnement de production, on aura tendance à privilégier un certain format de sortie. A nouveau, il existe une proposition pour cela (PEP-391. Ensuite, la doc Python-Guide propose trois approches différentes pour la gestion des logs:

  1. Soit via un fichier .ini
  2. Soit via un fichier .json ou un dictionnaire
  3. Soit directement dans le code.

On oublie de facto la troisième option, et on part sur une configuration par défaut avec la possibilité de charger un dictionnaire depuis un fichier .json.

Bref, l'idée est la suivante:

  • On oublie les print(), puisque que de toutes façons, on risque de finir avec un grep -rn "print" *.py pour les dégager tous avant la mise en prod'
  • On définit une série de handlers par défaut
  • Et on permet à l'utilisateur de définir ses propres handlers.

En 2013, Sam&Max avaient écrit un article sur comment écrire des logs en Python.

Pour résumer:

formatter = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s')