Aujourd'hui, nous allons discuter de la raison pour laquelle quelqu'un avait besoin d'écrire un remplacement pour l' logging
Python de logging
standard et comment utiliser cette chose.

C'est malade!
Lorsqu'il s'agit de se connecter à Python, la logging
vient immédiatement à l'esprit.
logging
est une solution robuste et stable étroitement intégrée à l'écosystème Python. Vous l’importez si nécessaire, vous effectuez quelques manipulations - et c’est tout, c’est comme cela que vous pouvez écrire l’ logger.exception('--')
. Et l'entrée '--'
se retrouvera dans une sorte de journal.
Après cela, les développeurs sont généralement intéressés à savoir exactement où est arrivé '--'
et ce qui se passe avec cet enregistrement. Les programmeurs montent dans les paramètres de l'enregistreur et commencent à utiliser le tas de diverses options pour lui apprendre à pousser correctement les enregistrements dans des fichiers, des bases de données, des collecteurs d'erreurs et d'autres endroits de stockage possible des enregistrements de journal.
Des configurations pour l'enregistreur apparaissent, qui commencent par un encombrant, mais plus ou moins compréhensible:
LOGGER_CONFIG = { "version": 1, "disable_existing_loggers": False, "formatters": { "simple": { "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s" } }, "handlers": { "console": { "class": "logging.StreamHandler", "level": "DEBUG", "formatter": "simple", "stream": "ext://sys.stdout" }, }, "root": { "level": "INFO", "handlers": ["console"] } }
De telles configurations évoluent rapidement vers quelque chose de beaucoup plus indigeste. Une configuration normalement configurée pour la logging
, avec différents niveaux de journalisation, différents collecteurs de messages et la rotation des fichiers journaux est un morceau de texte lourd qui est déjà très difficile à creuser.
Pour ne pas blesser et même agréable
Une fois, quelques programmeurs en ont eu assez de creuser (et de faire des erreurs) dans les nombreuses options de configuration pour la logging
. Ces ingénieurs ont écrit leur propre enregistreur, extrêmement simple et très puissant à la fois. Cette chose s'appelle Loguru .
Et voici une démo de cette bibliothèque, et elle montre de manière exhaustive comment il est possible de configurer la journalisation dans votre application puissante en quelques lignes.

Pourquoi devriez-vous considérer loguru
comme une alternative à la logging
?
- Simplicité. À ce sujet, je l'ai déjà dit ci-dessus, mais je le répète - configurer correctement
loguru
plus facile que de se logging
. - Des méthodes claires pour configurer la rotation des fichiers journaux et archiver les anciens enregistrements.
- Des piles de piles sont déjà incluses dans la boîte - couleurs des messages, formatage, envoi de notifications d'échec par e-mail, piles d'appels de fonction ainsi que des rapports de plantage et de nombreuses autres commodités intéressantes.
- Et, bien sûr, l'asynchronie! Oui, le monde de Python va de plus en plus vers l'asynchronisation / l'attente, et ce changement tectonique de toute programmation gourmande en énergie nécessite clairement des enregistreurs asynchrones.
Bien sûr, vous devez tout payer. Et pour utiliser loguru
devez payer deux choses:
- Lieba est relativement jeune et il peut y avoir des surprises.
- Les auteurs promettent une compatibilité totale avec la
logging
, mais vous pouvez très bien rencontrer des problèmes de connexion de loguru
avec des bibliothèques tierces pour la logging
. Par exemple, lors de l'attachement de gestionnaires pour Sentry ou Airbrake.
Malgré ces difficultés potentielles, loguru
mérite d'être soigneusement testé et attaché dès votre prochain projet.