Maison > développement back-end > Tutoriel Python > Guide avancé du module Python Logging : personnalisation et optimisation de la journalisation

Guide avancé du module Python Logging : personnalisation et optimisation de la journalisation

WBOY
Libérer: 2024-02-21 10:10:09
avant
590 Les gens l'ont consulté

Python Logging 模块高级指南:自定义和优化日志记录

python Guide avancé du module de journalisation

PersonnaliséLogNiveau

Le module de journalisation

Python prend en charge les niveaux de journalisation personnalisés, permettant aux développeurs de créer des niveaux spécifiques selon les besoins. Pour personnaliser le niveau de journalisation, utilisez la fonction logging.addLevelName() :

import logging

# 定义自定义日志等级
CUSTOM_LEVEL = 35

# 为自定义等级添加名称
logging.addLevelName(CUSTOM_LEVEL, "CUSTOM")
Copier après la connexion

Vous pouvez désormais enregistrer des messages en utilisant des niveaux personnalisés :

logging.log(CUSTOM_LEVEL, "自定义日志消息")
Copier après la connexion

Créer des gestionnaires personnalisés

Les gestionnaires sont responsables de l'écriture des messages de journal dans un fichier, une console ou une autre destination. Pour créer un gestionnaire personnalisé, héritez de la classe logging.Handler : 

class CustomHandler(logging.Handler):
def emit(self, record):
# 自定义日志记录逻辑
pass
Copier après la connexion

Ajoutez ensuite le gestionnaire personnalisé au logger :

logger = logging.getLogger()
logger.addHandler(CustomHandler())
Copier après la connexion

Formater les messages du journal

Formatter contrôle la disposition des messages du journal. Pour créer un formateur personnalisé, héritez de la classe logging.F<code>logging.F<strong class="keylink">ORM</strong>atterORM

atter :

class CustomFormatter(logging.Formatter):
def format(self, record):
# 自定义格式化逻辑
return formatted_message
Copier après la connexion

Ensuite, attachez le formateur personnalisé au gestionnaire :

handler = logging.FileHandler("log.txt")
formatter = CustomFormatter()
handler.setFormatter(formatter)
Copier après la connexion
OptimiséPerformance de journalisation

Pour garantir que la journalisation n'a pas d'impact négatif sur les performances de l'application, tenez compte des conseils d'optimisation suivants :
  • Utiliser la journalisation asynchrone : logging.handlers.QueueHandler Utilisez pour déplacer les opérations de journalisation hors du thread
  • principal.
  • Réduire la taille des messages du journal :
  • Utilisez un formateur personnalisé pour inclure uniquement les informations nécessaires.
  • Optimiser les gestionnaires : logging.handlers.RotatingFileHandler)或考虑第三方日志记录库(例如 gunicorn.glogging Utilisez des gestionnaires à grande vitesse (comme
  • ).
  • Nettoyez régulièrement les fichiers journaux : logging.FileHandler.maxByteslogging.handlers.RotatingFileHandler.backupCount Utilisez les paramètres
  • pour gérer la taille des fichiers journaux.

Bonnes pratiques de configuration

Pour garantir l'efficacité de votre configuration de journalisation, suivez ces bonnes pratiques :
  • Réglez le niveau de journalisation au niveau approprié : logging.DEBUG 进行详细诊断,logging.INFO 进行常规信息,logging.ERROR Utilisez
  • pour les erreurs.
  • Utilisez des filtres de spécificité : logging.Filter Utilisez la classe
  • pour filtrer les enregistrements de journaux provenant d'une source spécifique ou avec un message spécifique.
  • Vérifiez régulièrement les fichiers journaux :
  • Vérifiez régulièrement les fichiers journaux pour détecter les erreurs ou les anomalies.

Conclusion

En maîtrisant les techniques avancées de personnalisation et d'optimisation, le module Python Logging peut fournir une solution de journalisation complète et efficace. En personnalisant les niveaux de journalisation, en créant des gestionnaires personnalisés, en formatant les messages des journaux et en optimisant les performances de journalisation, les développeurs peuvent répondre aux besoins de leurs applications spécifiques et garantir que la journalisation fournit des informations précieuses sur leurs systèmes. 🎜

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