Heim >Backend-Entwicklung >Python-Tutorial >Python-Protokollierungsmodul: Eine erweiterte Anleitung für Anfänger bis Meister

Python-Protokollierungsmodul: Eine erweiterte Anleitung für Anfänger bis Meister

王林
王林nach vorne
2024-03-08 08:20:13592Durchsuche

Python logging 模块:初学者到大师的进阶指南

Anfängerleitfaden

EinstellungenProtokolleLogger

Das

Logging-Modul bietet eine praktische API zum Einrichten von Loggern. Der Logger ist dafür verantwortlich, Protokollnachrichten zu verarbeiten und sie in eine Datei oder Konsole zu schreiben:

import logging

# 创建一个名为 "my_logger" 的日志记录器
logger = logging.getLogger("my_logger")

# 设置日志级别为 DEBUG,表示要记录所有级别的日志消息
logger.setLevel(logging.DEBUG)

Protokollnachrichten aufzeichnen

Um eine Protokollmeldung zu protokollieren, verwenden Sie die vom Logger bereitgestellte debug(), info(), warning(), error()critical()-Methode. Jede Methode entspricht einer anderen Protokollebene:

logger.debug("这是 debug 消息")
logger.info("这是 info 消息")
logger.warning("这是 warning 消息")
logger.error("这是 error 消息")
logger.critical("这是 critical 消息")

Protokollformat

Standardmäßig verwendet das Protokollierungsmodul ein einfaches Protokollformat, einschließlich Protokollebene, Zeitstempel und Nachricht. Sie können das Protokollformat anpassen, um zusätzliche Informationen wie Funktionsnamen, Zeilennummer oder Prozess-ID aufzunehmen:

# 使用 %(asctime)s、%(levelname)s 和 %(message)s 占位符自定义日志格式
fORMatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")

# 将格式器添加到日志记录器
logger.addHandler(logging.StreamHandler())
logger.addHandler(logging.FileHandler("my_log.log"))

Leitfaden für Fortgeschrittene

Protokollhierarchie und Propagator

Das Protokollierungsmodul unterstützt Protokollhierarchien, in denen Protokollierer über- und untergeordnete Elemente haben können. Der übergeordnete Logger protokolliert alle Nachrichten im untergeordneten Logger:

# 创建一个名为 "parent_logger" 的父级日志记录器
parent_logger = logging.getLogger("parent_logger")

# 创建一个名为 "child_logger" 的子级日志记录器
child_logger = logging.getLogger("parent_logger.child_logger")

# 设置子级日志记录器的日志级别为 INFO,表示仅记录 info 和更高级别的消息
child_logger.setLevel(logging.INFO)

# 父级日志记录器中的消息将传播到子级日志记录器
parent_logger.info("父级日志记录器消息")
child_logger.info("子级日志记录器消息")

Protokollfilter

Mit Protokollfiltern können Sie steuern, welche Protokollmeldungen protokolliert oder weitergegeben werden. Filter können auf Protokollebene, Nachrichteninhalt oder anderen Eigenschaften basieren:

# 创建一个过滤器,仅允许记录 error 级别及以上的消息
filter = logging.Filter()
filter.filter = lambda record: record.levelno >= logging.ERROR

# 将过滤器添加到日志记录器
logger.addFilter(filter)

Erweiterter Leitfaden

Protokollrotation

Mit der Protokollrotation können Protokolldateien automatisch verwaltet und aufgeteilt werden, wenn sie zu groß werden. Sie können eine maximale Protokolldateigröße festlegen oder eine bestimmte Anzahl von Protokolldateien behalten:

# 使用 RotatingFileHandler 设置日志轮转,最大日志文件大小为 10MB
handler = logging.handlers.RotatingFileHandler("my_log.log", maxBytes=10240000)

# 将处理程序添加到日志记录器
logger.addHandler(handler)

Benutzerdefiniertes Protokollhandle

Mit dem Protokollierungsmodul können Sie Ihre eigenen Protokollhandler erstellen, was für mehr Flexibilität sorgt. Sie können <code><strong class="keylink">Socket</strong>Handler 将日志消息发送到远程服务器,或使用 TimedRotatingFileHandlerSocket

Handler verwenden, um Protokollnachrichten an einen Remote-

Server

zu senden, oder TimedRotatingFileHandler verwenden, um Protokolldateien basierend auf Zeitintervallen statt auf der Grundlage der Dateigröße zu rotieren:

# 创建一个自定义日志句柄,将日志消息发送到远程服务器
handler = logging.handlers.SocketHandler("localhost", 1234)

# 将处理程序添加到日志记录器
logger.addHandler(handler)
Fazit Das Python

-Protokollierungsmodul ist ein leistungsstarkes und flexibles 🎜Tool🎜, das die Protokollierungs- und Debugging-Funktionen Ihres Programms erheblich verbessern kann. Wenn Sie die in diesem Handbuch beschriebenen Techniken verstehen und anwenden, können Sie Protokolle effektiv verwalten, Probleme beheben und sicherstellen, dass Ihre Programme stabil und zuverlässig laufen. 🎜

Das obige ist der detaillierte Inhalt vonPython-Protokollierungsmodul: Eine erweiterte Anleitung für Anfänger bis Meister. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lsjlt.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen