python logging 模組是一個強大且多功能的工具,可用於在Python 應用程式中記錄和管理日誌訊息。透過掌握 logging 模組的秘密配方,您可以建立一個高效且易於維護的日誌系統,從而提高應用程式的可靠性和可偵錯性。
自訂日誌等級
#logging 模組提供了一組預先定義的日誌級別,包括 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。您可以根據應用程式的需求自訂這些級別,建立更細化的日誌記錄層次結構。例如,您可以將自訂等級(如 "TRACE")新增至記錄應用程式中發生的詳細事件。
import logging # 创建自定义日志级别 TRACE = logging.DEBUG - 5 logging.addLevelName(TRACE, "TRACE") # 创建一个使用自定义级别的日志记录器 logger = logging.getLogger(__name__) logger.setLevel(TRACE)
使用多種日誌處理程序
日誌處理程序負責將日誌訊息傳送到不同的目標,例如檔案、控制台或遠端伺服器。 logging 模組提供了一系列內建處理程序,您還可以建立自訂處理程序來滿足特定需求。使用多個處理程序,您可以將日誌訊息同時記錄到多個目標,提供更全面的日誌記錄。
# 创建一个文件处理程序 file_handler = logging.FileHandler("my_log.log") # 创建一个控制台处理程序 console_handler = logging.StreamHandler() # 为日志记录器添加处理程序 logger.addHandler(file_handler) logger.addHandler(console_handler)
日誌格式化
日誌格式指定了日誌訊息的結構和佈局。 logging 模組提供了一個靈活的格式化系統,可讓您自訂日誌訊息的外觀。使用日誌格式,您可以包含訊息內容、時間戳記、日誌等級和呼叫程式碼來源等資訊。
# 创建一个自定义日志格式 fORMatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") # 将格式应用于处理程序 file_handler.setFormatter(formatter) console_handler.setFormatter(formatter)
過濾日誌訊息
#logging 模組可讓您過濾日誌訊息,只記錄符合特定條件的訊息。可根據日誌等級、訊息內容或其他自訂條件建立篩選器。過濾日誌訊息可以減少日誌產量,並確保只記錄對偵錯或分析有用的訊息。
# 创建一个过滤器以只记录 ERROR 和 CRITICAL 消息 filter = logging.Filter() filter.filter = lambda record: record.levelno >= logging.ERROR # 将过滤器应用于一个处理程序 file_handler.addFilter(filter)
日誌傳播
日誌傳播控制了日誌訊息的傳播方式。預設情況下,日誌訊息會傳播到應用程式中所有包含處理程序的日誌記錄器。但是,您可以透過設定日誌傳播來控制訊息在日誌記錄器層次結構中的流動。這有助於防止重複和冗餘日誌訊息。
# 禁用日志传播 logger.propagate = False
日誌旋轉
日誌旋轉限制了單一日誌檔案的最大大小,從而防止檔案變得過大而難以管理。 logging 模組提供了一個 FileHandler 類,支援自動日誌旋轉,當日誌檔案達到指定大小或時間限制時,可以建立新的日誌檔案。
# 创建一个带日志旋转的文件处理程序 file_handler = logging.handlers.RotatingFileHandler("my_log.log", maxBytes=1024, backupCount=5)
效能最佳化
logging 模組在記錄日誌訊息時會產生一些開銷。為了優化效能,您可以使用以下技巧:
透過掌握 Python logging 模組的這些秘密配方,您可以建立強大的日誌系統,提高應用程式的可靠性和可偵錯性。
以上是Python logging 模組的秘密配方:打造高效能日誌系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!