Heim > Backend-Entwicklung > Python-Tutorial > Python-Protokollierungsmodul entschlüsselt: enthüllt seine unbekannte Seite

Python-Protokollierungsmodul entschlüsselt: enthüllt seine unbekannte Seite

王林
Freigeben: 2024-03-08 08:19:17
nach vorne
362 Leute haben es durchsucht

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

1. Protokollebene: Präzise Kontrolle der Protokollinformationen

Das

Protokollierungsmodul definiert fünf Standard-Protokollierungsebenen: DEBUG, INFO, WARNUNG, FEHLER und KRITISCH. Diese Ebenen bestimmen die Wichtigkeit und den Schweregrad der zu protokollierenden Nachrichten. Standardmäßig werden bei der Protokollierung nur Meldungen der Stufe WARNING und höher protokolliert. Sie können das Protokollierungsverhalten feinabstimmen, indem Sie die Protokollierungsebene festlegen. Zum Beispiel:

import logging

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

2. Protokollformat: benutzerdefinierte Protokollausgabe

Das Protokollierungsmodul bietet einen leistungsstarken Protokollformatierungsmechanismus, mit dem Sie das Erscheinungsbild von Protokollmeldungen anpassen können. Format

String

Gibt die in der Protokollnachricht enthaltenen Informationen an, z. B. Zeitstempel, Protokollebene, Nachrichtentext und Stack-Trace. Das Standardformat ist:

"[%(asctime)s] %(levelname)s %(module)s.%(funcName)s: %(message)s"
Nach dem Login kopieren
Sie können das Format mit dem folgenden Code anpassen:

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

3. Protokollprozessor: erweitertes Protokollausgabeziel

Ein Handler ist dafür verantwortlich, Protokollnachrichten an ein bestimmtes Ziel zu senden, z. B. eine Datei, eine Konsole oder einen Remote-

Server

. Das Protokollierungsmodul bietet mehrere integrierte Handler wie StreamHandler und FileHandler. Das Erstellen benutzerdefinierter Prozessoren ist ebenfalls sehr einfach. Sie müssen eine Klasse erstellen und die Handle-Methode überschreiben, die die Protokollnachricht in das Ziel schreibt. Um beispielsweise Protokolle in eine benutzerdefinierte Datei zu schreiben:

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

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

4. Protokollfilter: Filtern Sie unnötige Protokollnachrichten

Mit Filtern können Sie Protokollnachrichten nach bestimmten Kriterien filtern. Sie können Filter basierend auf Protokollebene, Nachrichtentext oder anderen Kriterien erstellen. Filter können an Prozessoren angehängt werden, um nur Nachrichten durchzulassen, die die Kriterien erfüllen.

Zum Beispiel ein Filter, der Nachrichten mit der Stufe WARNUNG:

ignoriert
import logging

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

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

5. Protokollkontextverwaltung: elegante Protokollierung

logging.LoggerContextManager Der Kontextmanager bietet eine übersichtliche Möglichkeit, Nachrichten in Blöcken zu protokollieren. Dies ist nützlich, um die Protokollebene vorübergehend zu ändern oder die Protokollierung zu deaktivieren.

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

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

6. Fortgeschrittene Fähigkeiten:

    Wörterbuchkonfigurator verwenden:
  • Wörterbuchkonfigurator verwenden, um flexiblere Konfigurationsoptionen bereitzustellen.
  • Erstellen Sie Ihre eigenen Protokollebenen:
  • Erweitern Sie die integrierten Ebenen, indem Sie eine benutzerdefinierte Protokollebene schreiben.
  • Verwenden Sie ein Protokollierungsframework:
  • wie structlog oder loguru, die erweiterte Funktionen und Skalierbarkeit bieten.
  • Asynchrone Protokollierung:
  • Verbessern Sie die Leistung großer Anwendungen durch den Einsatz asynchroner Prozessoren.
  • Ausnahmen protokollieren:
  • Verwenden Sie logging.exclusiveion() oder logging.log_Exception(), um Ausnahme-Stack-Traces zu protokollieren.
Fazit:

Das

Python

-Protokollierungsmodul ist ein leistungsstarkes Tool, mit dem sich Anwendungsaktivitäten effizient protokollieren lassen. Durch das Verständnis von Protokollebenen, Protokollformaten, Protokollprozessoren, Protokollfiltern und erweiterten Techniken können Sie die Möglichkeiten der Protokollierung voll ausschöpfen und flexible und sinnvolle Protokollierungslösungen für Ihre Anwendungen erstellen.

Das obige ist der detaillierte Inhalt vonPython-Protokollierungsmodul entschlüsselt: enthüllt seine unbekannte Seite. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:lsjlt.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage