Consigner les messages sur la console dans Django
Lorsque nous installons un ensemble de logiciels sur notre machine, nous trouvons souvent un fichier journal ou voyons des messages s’imprimer dans la console de cette application. Ce sont des messages de journal qui fournissent des informations sur les événements se produisant dans l’application, les tâches que le logiciel achève, les erreurs rencontrées, les avertissements, etc. Ces messages aident les développeurs de logiciels à améliorer leur application et à la déboguer si les utilisateurs autorisent l’application à partager les rapports d’erreurs.
Lorsque vous travaillez avec Django ou tout autre framework pour un projet, nous utilisons généralement des instructions print pour déboguer nos applications. Les déclarations d’impression sont grandioses; ils sont intégrés et très faciles à utiliser. Mais nous pouvons faire passer cette chose au niveau supérieur si nous commençons à utiliser des packages ou des bibliothèques dédiées à cet effet. Ces bibliothèques nous permettent de définir des niveaux pour nos messages de journal et d’imprimer sans effort des informations supplémentaires telles que les numéros de ligne et les horodatages. Certaines bibliothèques nous permettent même d’ajouter des couleurs à nos instructions ou messages de journal.
Dans cet article, nous allons apprendre à enregistrer des messages sur la console dans les projets Django.
Messages de journal à l’aide de la bibliothèque Python intégrée logging
Python est livré avec une bibliothèque intégrée logging
, dont le seul but est d’aider à mettre en œuvre un système de journalisation des événements flexible. Dans cet article, nous ne passerons pas en revue tout mais ne couvrirons que les bases et quelques éléments essentiels.
Lorsque nous travaillons avec logging
, nous utilisons un logger
pour enregistrer les messages sur la console. Comme mentionné ci-dessus, les messages de journal ont des niveaux qui indiquent le but d’un message de journal. Cette bibliothèque a cinq niveaux de ce type, et chaque niveau a un numéro d’ancienneté qui lui est attaché. Par exemple, le niveau CRITICAL
a l’ancienneté la plus élevée de 50. DEBUG
a 10. INFO
, WARNING
et ERROR
ont respectivement 20, 30 et 40.
DEBUG
- Permet d’imprimer des messages pour déboguer une application.INFO
- Utilisé pour imprimer des messages généraux tels que des affirmations, des confirmations et des messages de réussite.WARNING
- Utilisé pour signaler des avertissements, des événements inattendus dus à des entrées, des indications pour certains problèmes qui pourraient survenir dans le futur, etc.ERROR
- Utilisé pour alerter sur des problèmes graves qui n’arrêteront probablement pas l’exécution de l’application.CRITICAL
- Utilisé pour alerter sur les problèmes critiques qui peuvent endommager les données utilisateur, exposer les données utilisateur, entraver la sécurité, arrêter un service ou peut-être mettre fin à l’application elle-même.
La bibliothèque logging
a des fonctions que nous pouvons utiliser pour enregistrer les messages. Pour démontrer, vérifiez le code ci-dessous:
import logging
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
Par défaut, le logger n’enregistre pas les messages de log de niveau debug
et info
. Pour les activer, nous devons définir un niveau pour le logger. Le code suivant fait de même :
import logging
logging.basicConfig(level=logging.NOTSET) # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
Si le niveau est réglé sur INFO
, tous les niveaux avec des numéros d’ancienneté supérieurs et égaux à celui de INFO
seront seuls imprimés. Le programme suivant décrit ce processus :
import logging
logging.basicConfig(level=logging.INFO) # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
La méthode basicConfig()
peut être utilisée pour définir le niveau. Au total, le paramètre level
peut accepter six valeurs.
logging.DEBUG
#10logging.INFO
# 20logging.WARNING
#30logging.ERROR
# 40logging.CRITICAL
# 50logging.NOTSET
# 0
Il y a plus de paramètres que vous pouvez configurer ; vous pouvez en savoir plus à leur sujet ici.
Pour en savoir plus, consultez cette liste :
filename
- La méthodebasicConfig()
a un paramètrefilename
qui peut être utilisé pour définir un nom de fichier, auquel tous les messages doivent être enregistrés. Lorsqu’un nom de fichier est spécifié, les messages du journal sont enregistrés dans ce fichier au lieu de la console.filemode
- La méthodebasicConfig()
possède un paramètrefilemode
permettant de définir le mode d’ouverture du fichier mentionné. Par défaut, il est défini sur"a"
, ce qui signifieappend
. Ainsi, chaque fois que vous exécuterez le programme, de nouveaux messages de journal seront ajoutés aux anciens messages.format
- La méthodebasicConfig()
possède un paramètreformat
qui permet de formater la structure des messages de log. Le format par défaut, qui ressemble à ceci :<Level>:root:<Message>
, sera écrasé par le nouveau format.
Si vous voulez en savoir plus sur cette bibliothèque, référez-vous ici.