Maison  >  Article  >  développement back-end  >  La recette secrète du module de journalisation de Python : construire un système de journalisation efficace

La recette secrète du module de journalisation de Python : construire un système de journalisation efficace

王林
王林avant
2024-03-08 08:40:03788parcourir

Le module de journalisation

Python logging 模块的秘密配方:打造高效日志系统

python est un outil puissant et polyvalent qui peut être utilisé pour enregistrer et gérer les messages log dans les applications Python. En maîtrisant la recette secrète du module de journalisation, vous pouvez créer un système de journalisation efficace et facile à entretenir qui améliore la fiabilité et la possibilité de débogage de votre application.

Niveau de journal personnalisé

Le module de journalisation fournit un ensemble de niveaux de journalisation prédéfinis, notamment DEBUG, INFO, ATTENTION, ERREUR et CRITIQUE. Vous pouvez personnaliser ces niveaux pour créer une hiérarchie de journalisation plus granulaire en fonction des besoins de votre application. Par exemple, vous pouvez ajouter un niveau personnalisé, tel que « TRACE », pour enregistrer les événements détaillés qui se produisent dans votre application.

import logging

# 创建自定义日志级别
TRACE = logging.DEBUG - 5
logging.addLevelName(TRACE, "TRACE")

# 创建一个使用自定义级别的日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(TRACE)

Utilisez plusieurs gestionnaires de journaux

Les gestionnaires de journaux sont responsables de l'envoi des messages de journal vers différentes destinations, telles que des fichiers, des consoles ou des serveurs distants. Le module de journalisation fournit une gamme de gestionnaires intégrés et vous pouvez créer des gestionnaires personnalisés pour répondre à vos besoins spécifiques. À l’aide de plusieurs gestionnaires, vous pouvez enregistrer des messages sur plusieurs cibles simultanément, offrant ainsi une journalisation plus complète.

# 创建一个文件处理程序
file_handler = logging.FileHandler("my_log.log")

# 创建一个控制台处理程序
console_handler = logging.StreamHandler()

# 为日志记录器添加处理程序
logger.addHandler(file_handler)
logger.addHandler(console_handler)

Formatage du journal

Le format du journal spécifie la structure et la disposition des messages du journal. Le module de journalisation fournit un système de formatage flexible qui vous permet de personnaliser l'apparence des messages du journal. À l'aide du format de journal, vous pouvez inclure des informations telles que le contenu du message, l'horodatage, le niveau de journalisation et la source du code d'appel.

# 创建一个自定义日志格式
fORMatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

# 将格式应用于处理程序
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)

Filtrer les messages du journal

Le module de journalisation vous permet de filtrer les messages du journal et de consigner uniquement les messages qui répondent à certains critères. Des filtres peuvent être créés en fonction du niveau de journalisation, du contenu du message ou d'autres critères personnalisés. Le filtrage des messages du journal peut réduire la sortie du journal et garantir que seuls les messages utiles au débogage ou à l'analyse sont consignés.

# 创建一个过滤器以只记录 ERROR 和 CRITICAL 消息
filter = logging.Filter()
filter.filter = lambda record: record.levelno >= logging.ERROR

# 将过滤器应用于一个处理程序
file_handler.addFilter(filter)

Propagation des journaux

La propagation des journaux contrôle la façon dont les messages de journal sont propagés. Par défaut, les messages de journal sont propagés à tous les enregistreurs de l'application qui contiennent des gestionnaires. Cependant, vous pouvez contrôler le flux des messages via la hiérarchie des enregistreurs en configurant la propagation des journaux. Cela permet d'éviter les messages de journal en double et redondants.

# 禁用日志传播
logger.propagate = False

Rotation des journaux

La rotation des journaux limite la taille maximale d'un seul fichier journal, empêchant ainsi les fichiers de devenir trop volumineux à gérer. Le module de journalisation fournit une classe FileHandler qui prend en charge la rotation automatique des journaux et crée de nouveaux fichiers journaux lorsque le fichier journal atteint une taille ou une limite de temps spécifiée.

# 创建一个带日志旋转的文件处理程序
file_handler = logging.handlers.RotatingFileHandler("my_log.log", maxBytes=1024, backupCount=5)

Optimisation des performances

Le module de journalisation entraîne une certaine surcharge lors de la journalisation des messages. Pour optimiser les performances, vous pouvez utiliser les conseils suivants :

  • Enregistrez uniquement les informations utiles pour le débogage ou l'analyse.
  • Utilisez des filtres pour réduire la sortie du journal.
  • Utilisez un format de journal efficace.
  • Évitez la création et la destruction fréquentes d'enregistreurs.
  • Utilisez un enregistreur asynchrone pour réduire le blocage des threads principaux.

En maîtrisant ces recettes secrètes du module de journalisation Python, vous pouvez créer de puissants systèmes de journalisation et améliorer la fiabilité et la débogabilité de vos applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer