Créer un fichier log en python

Lorsque vous installez python, il y a un module déja fourni, très utile qui permet de géner des logs et de les enregistrer dans un fichier.

Il existe différents niveaux de log dans ce module (mis dans l'ordre du moins important au plus important) :

  • debug : on l'utilise pour verifier le resultat d'une fonction ...
  • info : on l'utilise pour obtenir des informations sur le programme
  • warning : on l'utilise quand il y a un "problème" peu grave
  • error : on l'utilise lorsqu'une erreur survient
  • critical : on l'utilise quand le programme va avoir une erreur critique

Dans notre programme pour afficher les logs il faut déja importer le module logging.

In [3]:
import logging

Ensuite vous pouvez ajouter les logs de différents niveau que vous desirez afficher dans la console

In [ ]:
logging.debug("La fonction a bien été exécutée")
logging.info("Message d'information général")
logging.warning("Attention !")
logging.error("Une erreur est arrivée")
logging.critical("Erreur critique")

Si vous exécutez ce code vous voyez que tous les niveaux de log ne s'affichent pas dans la console. En effet par défaut les logs qui s'afficheront dans la console sont uniquement les niveaux : warning, error et critical.

Il est tout à fait possible de modifier le niveau de log affiché en utilisant la méthode basicconfig de la manière suivante ;

logging.basicConfig(level=logging.<le niveau minimum à afficher écrit en majuscule>)

Donc si on veut afficher tous les niveaux de log il faudra écrire au debut du fichier python (après les import) :

In [5]:
logging.basicConfig(level=logging.DEBUG)

Jusqu'a maintenant on a seulement affiché dans la console les logs, maintenant plutôt que de les afficher dans la console enregistrons les dans un fichier. Pour faire cela on va modifier les paramètres donnés à la methode basicConfig. On va ajouter le format sous lequel on va nommer les logs dans le fichier de logs, ajouter le mode d'écriture dans le fichier de logs et enfin le nom du fichier de logs.

Voici un exemple de ce que l'on pourrait écrire :

In [6]:
logging.basicConfig(level=logging.DEBUG,
                    filename="app.log",
                    filemode="a",
                    format='%(asctime)s - %(levelname)s - %(message)s')

Ici j'ai choisi de nommer mon fichier de log "app.log", mettre le mode d'écriture "a" (append) pour le fichier ( c'est a dire que l'on ajoute au fichier existant les nouveaux logs) et de formater l'écriture de la façon suivante : <date et heure> - <niveau de log> - <message> )


Voici le code complet de l'exemple utilisé dans ce "petit cours" :

In [ ]:
import logging

logging.basicConfig(level=logging.DEBUG,
                    filename="app.log",
                    filemode="a",
                    format='%(asctime)s - %(levelname)s - %(message)s')

logging.debug("La fonction a bien été exécutée")
logging.info("Message d'information général")
logging.warning("Attention !")
logging.error("Une erreur est arrivée")
logging.critical("Erreur critique")