Extensions au module Python Logging : ajout de fonctionnalités personnalisées

王林
Libérer: 2024-02-21 09:09:23
avant
431 Les gens l'ont consulté

Le module de journalisation

Python Logging 模块的扩展:添加自定义功能

python est un outil puissant pour enregistrer les événements et les erreurs dans les programmes. En étendant ce module, vous pouvez ajouter des fonctionnalités personnalisées pour améliorer les capacités de logginglogging et simplifier le débogage et la gestion des erreurs. Cet article vous guidera sur la façon d'étendre le module Logging pour répondre à vos besoins spécifiques.

Méthodes d'extension

Il existe deux manières principales d'étendre le module Logging :

  • Créer un nouvel enregistreur : Vous pouvez utiliser logging.getLogger() pour créer un nouvel enregistreur et le configurer avec des niveaux et des formateurs personnalisés.
  • Utilisation des extensions d'enregistreur : Vous pouvez utiliser logging.LoggerAdapter() pour créer une extension d'enregistreur qui ajoute des fonctionnalités personnalisées à son enregistreur parent.

Ajouter des niveaux personnalisés

Peut être utilisé logging.addLevelName() 函数添加自定义级别。这允许您定义新级别的重要性,使其高于或低于现有的级别。例如,您可以添加一个名为 "TRACE" 的级别,其重要性高于 DEBUG.

import logging

# 添加自定义级别
logging.addLevelName(5, "TRACE")
Copier après la connexion

Utilisez des niveaux personnalisés

Après avoir ajouté un niveau personnalisé, vous pouvez l'utiliser pour enregistrer des messages. Utilisez la fonction logger.log() et spécifiez un niveau personnalisé :

# 使用自定义级别
logger.log(5, "自定义跟踪消息")
Copier après la connexion

Créer des formateurs personnalisés

Le format des messages de journal peut être modifié en créant une classe de formateur personnalisée. Cette classe doit implémenter la méthode f<code>f<strong class="keylink">ORM</strong>at()ORM

at(), qui formate le message de journalisation.

import logging

# 创建自定义格式化程序类
class MyFormatter(logging.Formatter):
def format(self, record):
# 自定义格式化代码
return f"{record.levelname}: {record.message}"
Copier après la connexion
Utilisez un formateur personnalisé

Après avoir créé votre formateur personnalisé, vous pouvez le joindre à l'enregistreur :

# 使用自定义格式化程序
logger.handlers[0].setFormatter(MyFormatter())
Copier après la connexion
Utiliser l'extension de l'enregistreur

logging.LoggerAdapter()L'extension Logger vous permet d'ajouter des fonctionnalités personnalisées à votre enregistreur existant. Vous pouvez utiliser

pour créer une extension de journalisation et lui fournir des informations contextuelles ou des gestionnaires supplémentaires.

import logging

# 创建新的日志记录器
logger = logging.getLogger("my_logger")

# 创建日志记录器扩展
adapter = logging.LoggerAdapter(logger, {"extra_info": "额外信息"})

# 使用日志记录器扩展
adapter.info("扩展日志消息")
Copier après la connexion
Utiliser l'extension de l'enregistreur

extraL'extension de l'enregistreur vous permet également d'ajouter des informations contextuelles supplémentaires aux messages de journalisation. Ces informations sont accessibles via le dictionnaire

.

# 从日志记录器扩展器访问额外信息
print(adapter.extra["extra_info"])
Copier après la connexion
Gestionnaire personnalisé

En plus d'étendre le module Logging, vous pouvez également créer des gestionnaires personnalisés pour gérer les messages de journalisation. Les gestionnaires personnalisés vous permettent de contrôler la manière dont les messages de journalisation sont traités, par exemple via des notifications par e-mail ou Slack.

import logging

# 创建自定义处理程序类
class MyHandler(logging.Handler):
def emit(self, record):
# 自定义处理逻辑
pass

# 将自定义处理程序添加到日志记录器
logger.addHandler(MyHandler())
Copier après la connexion
Résumé

Extensions Python

Le module Logging vous permet d'améliorer la fonctionnalité de journalisation en ajoutant des niveaux personnalisés, des formateurs, des gestionnaires et des extensions. En étendant ce module, vous pouvez simplifier le débogage, améliorer la gestion des erreurs et bénéficier d'une expérience de journalisation plus complète. 🎜

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!

source:lsjlt.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal