首頁 >後端開發 >Python教學 >Python logging 模組:初學者到大師的進階指南

Python logging 模組:初學者到大師的進階指南

王林
王林轉載
2024-03-08 08:20:13592瀏覽

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

初學者指南

設定日誌記錄器

logging 模組提供了一個方便的 api,用於設定日誌記錄器。日誌記錄器將負責處理日誌訊息並將其寫入檔案或控制台:

import logging

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

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

記錄日誌訊息

要記錄日誌訊息,請使用日誌記錄器提供的debug(), info(), warning(), error( )critical() 方法。每個方法對應一個不同的日誌等級:

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

日誌格式

預設情況下,logging 模組使用簡單的日誌格式,包括日誌等級、時間戳記和訊息。您可以自訂日誌格式以包含其他信息,例如函數名稱、行號或進程 ID:

# 使用 %(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"))

中級指南

日誌層次結構與傳播器

logging 模組支援日誌層次結構,其中日誌記錄器可以具有父級和子級。父級記錄器將記錄子級記錄器中的所有訊息:

# 创建一个名为 "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("子级日志记录器消息")

日誌過濾器

您可以使用日誌過濾器來控制哪些日誌訊息被記錄或傳播。過濾器可以基於日誌等級、訊息內容或其他屬性:

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

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

進階指南

日誌輪轉

當日誌檔案變得過大時,日誌輪替可以自動管理和分割日誌檔案。您可以設定最大日誌檔案大小或保留一定數量的日誌檔案:

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

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

自訂日誌句柄

logging 模組可讓您建立自己的日誌句柄,提供更大的靈活性。您可以使用<strong class="keylink">Socket</strong>Handler 將日誌訊息傳送到遠端伺服器,或使用TimedRotatingFileHandler 根據時間間隔而不是檔案大小輪換日誌文件:

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

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

結論

python logging 模組是一個功能強大且靈活的工具,可以顯著提高您程式的日誌記錄和偵錯能力。透過了解和使用本指南中介紹的技術,您將能夠有效地管理日誌、解決問題並確保您的程式穩定可靠地運作。

以上是Python logging 模組:初學者到大師的進階指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lsjlt.com。如有侵權,請聯絡admin@php.cn刪除