Maison >développement back-end >Tutoriel Python >Module de journalisation Python décrypté : révéler son côté inconnu

Module de journalisation Python décrypté : révéler son côté inconnu

王林
王林avant
2024-03-08 08:19:17374parcourir

Python logging 模块解密:揭示其不为人知的一面

1. Niveau de journal : contrôle précis des informations du journal

Le module

logging définit cinq niveaux log standards : DEBUG, INFO, AVERTISSEMENT, ERREUR et CRITIQUE. Ces niveaux déterminent l'importance et la gravité des messages à enregistrer. Par défaut, la journalisation enregistre uniquement les messages de niveau AVERTISSEMENT et supérieur. Vous pouvez affiner le comportement de la journalisation en définissant le niveau de l'enregistreur. Par exemple :

import logging

# 设置 root 日志器的级别为 INFO
logging.basicConfig(level=logging.INFO)

2. Format du journal : sortie du journal personnalisée

Le module de journalisation fournit un puissant mécanisme de formatage des journaux qui vous permet de personnaliser l'apparence des messages du journal. Format StringSpécifie les informations contenues dans le message de journal, telles que l'horodatage, le niveau de journalisation, le texte du message et la trace de la pile. Le format par défaut est :

"[%(asctime)s] %(levelname)s %(module)s.%(funcName)s: %(message)s"

Vous pouvez personnaliser le format à l'aide du code suivant :

# 设置自定义日志格式
logging.basicConfig(fORMat="%(asctime)s %(levelname)-8s %(message)s")

3. Processeur de journaux : destination de sortie de journal étendue

Un gestionnaire est responsable de l'envoi des messages de journal à une destination spécifique, telle qu'un fichier, une console ou un serveur distant. Le module de journalisation fournit plusieurs gestionnaires intégrés tels que StreamHandler et FileHandler.

Créer des processeurs personnalisés est également très simple. Vous devez créer une classe et remplacer la méthode handle, qui écrit le message de journal sur la cible. Par exemple, pour écrire des journaux dans un fichier personnalisé : 

class MyFileHandler(logging.FileHandler):
def __init__(self, filename):
super().__init__(filename)

# 将自定义处理器添加到 root 日志器
logging.getLogger().addHandler(MyFileHandler("my_log.txt"))

4. Filtre de journal : filtrez les messages de journal inutiles

Les filtres vous permettent de filtrer les messages du journal en fonction de critères spécifiques. Vous pouvez créer des filtres basés sur le niveau de journalisation, le texte du message ou d'autres critères. Des filtres peuvent être attachés aux processeurs pour permettre le passage uniquement des messages répondant aux critères.

Par exemple, un filtre qui ignore les messages de niveau ATTENTION :

import logging

# 创建筛选器忽略 WARNING 级别的消息
filter = logging.Filter()
filter.filter = lambda record: record.levelno < logging.WARNING

# 将筛选器添加到 root 日志器的处理器
logging.getLogger().handlers[0].addFilter(filter)

5. Gestion du contexte de journal : journalisation élégante

logging.LoggerContextManager Le gestionnaire de contexte fournit un moyen concis de consigner les messages en blocs. Ceci est utile pour modifier temporairement les niveaux de journalisation ou désactiver la journalisation.

with logging.LoggerContextManager():
# 临时将日志级别设置为 DEBUG
logging.getLogger().setLevel(logging.DEBUG)

# 在块内记录 DEBUG 级的消息
logging.debug("调试信息")

6. Compétences avancées :

  • Utilisez le configurateur de dictionnaire : Utilisez le configurateur de dictionnaire pour fournir des options de configuration plus flexibles.
  • Créez vos propres niveaux de journalisation : Étendez les niveaux intégrés en écrivant un niveau de journalisation personnalisé.
  • Utilisez un framework de journalisation : tel que structlog ou loguru, qui offrent des fonctionnalités avancées et une évolutivité.
  • Journalisation asynchrone : Améliorez les performances des grandes applications en utilisant des processeurs asynchrones.
  • Journalisation des exceptions : Utilisez logging.saufion() ou logging.log_exception() pour enregistrer les traces de la pile d'exceptions.

Conclusion :

Le module de journalisation

python est un outil puissant qui peut être utilisé pour enregistrer efficacement les activités des applications. En comprenant les niveaux de journalisation, les formats de journaux, les processeurs de journaux, les filtres de journaux et les techniques avancées, vous pouvez tirer pleinement parti des capacités de journalisation et créer des solutions de journalisation flexibles et significatives pour 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