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)
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 消息")
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"))
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("子级日志记录器消息")
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)
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)
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
将日志消息发送到远程服务器,或使用 TimedRotatingFileHandler
Socket
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)
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!