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中文網其他相關文章!