1. 日誌等級:精準控制日誌資訊
#logging 模組定義了五種標準日誌等級:DEBUG、INFO、WARNING、ERROR 和 CRITICAL。這些等級決定了要記錄的訊息的重要性和嚴重性。預設情況下,logging 僅記錄 WARNING 及以上等級的訊息。您可以透過設定日誌器的等級來微調日誌的行為。例如:
import logging # 设置 root 日志器的级别为 INFO logging.basicConfig(level=logging.INFO)
2. 日誌格式:客製化日誌輸出
logging 模組提供了強大的日誌格式機制,可讓您自訂日誌訊息的外觀。格式字串指定了日誌訊息中包含的訊息,例如時間戳記、日誌等級、訊息文字和堆疊追蹤。預設格式為:
"[%(asctime)s] %(levelname)s %(module)s.%(funcName)s: %(message)s"
您可以使用以下程式碼自訂格式:
# 设置自定义日志格式 logging.basicConfig(fORMat="%(asctime)s %(levelname)-8s %(message)s")
3. 日誌處理器:擴充日誌輸出目的地
處理器負責將日誌訊息傳送到特定目標,例如檔案、控制台或遠端伺服器。 logging 模組提供了幾種內建處理器,如 StreamHandler 和 FileHandler。
建立自訂處理器也非常簡單。您需要建立一個類別並覆寫 handle 方法,該方法將日誌訊息寫入目標。例如,將日誌寫入自訂檔案:
class MyFileHandler(logging.FileHandler): def __init__(self, filename): super().__init__(filename) # 将自定义处理器添加到 root 日志器 logging.getLogger().addHandler(MyFileHandler("my_log.txt"))
4. 日誌篩選器:過濾不必要的日誌訊息
#篩選器可讓您根據特定的條件過濾日誌訊息。您可以基於日誌等級、訊息文字或其他標準來建立篩選器。篩選器可以附加到處理器,以僅允許滿足條件的訊息通過。
例如,忽略 WARNING 等級的訊息的篩選器:
import logging # 创建筛选器忽略 WARNING 级别的消息 filter = logging.Filter() filter.filter = lambda record: record.levelno < logging.WARNING # 将筛选器添加到 root 日志器的处理器 logging.getLogger().handlers[0].addFilter(filter)
5. 日誌上下文管理:優雅的日誌記錄
#logging.LoggerContextManager 上下文管理器提供了一種簡潔的方式來記錄區塊中的訊息。這對於臨時更改日誌等級或停用日誌記錄非常有用。
with logging.LoggerContextManager(): # 临时将日志级别设置为 DEBUG logging.getLogger().setLevel(logging.DEBUG) # 在块内记录 DEBUG 级的消息 logging.debug("调试信息")
6. 進階技巧:
結論:
python logging 模組是一個功能強大的工具,可用於有效地記錄應用程式活動。透過理解日誌等級、日誌格式、日誌處理器、日誌篩選器和進階技巧,您可以充分利用 logging 的功能,為您的應用程式建立靈活且有意義的日誌記錄解決方案。
以上是Python logging 模組解密:揭露其不為人知的一面的詳細內容。更多資訊請關注PHP中文網其他相關文章!