日志級別
日志級別決定了哪些消息會輸出到日志。python Logging 模塊提供了 6 個日志級別(從低到高):
DEBUG INFO WARNING ERROR CRITICAL FATAL
登錄后復制
通常,建議使用以下級別:
DEBUG: 用于調試信息,僅在開發階段使用
INFO: 用于常規信息,記錄系統狀態和操作
WARNING: 用于潛在的問題,可能導致問題但不會立即中斷系統
ERROR: 用于錯誤和異常,需要關注和解決
CRITICAL: 用于嚴重錯誤,會導致系統中斷
日志格式
日志格式決定了日志消息中包含的信息。Python Logging 模塊提供了多種預定義的格式器,例如:
logging.FORMatter()
logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
登錄后復制
還可以自定義格式器,添加其他信息,例如進程 ID、線程名稱或調用堆棧。
日志處理
日志處理決定了日志消息如何輸出和處理。Python Logging 模塊提供了多種處理器,例如:
StreamHandler: 將日志消息輸出到 stdout 或 stderr
FileHandler: 將日志消息輸出到文件
RotatingFileHandler: 將日志消息輸出到文件,當文件達到一定大小時自動滾動
SocketHandler: 將日志消息通過網絡發送到遠程主機
可以同時使用多個處理器,以不同的方式處理日志消息。
最佳實踐
以下是一些 Python Logging 模塊的最佳實踐:
使用恰當的日志級別:根據消息的重要性選擇適當的日志級別。
自定義日志格式:根據需要添加其他信息,以提高日志的可讀性和可追溯性。
使用多個處理器:同時使用多個處理器以不同的方式處理日志消息,例如將錯誤消息記錄到文件,而將調試信息輸出到控制臺。
使用 logging.config 模塊:使用此模塊配置復雜的日志記錄設置,例如使用配置文件或 dictConfig() 函數。
遵循日志約定:在整個代碼庫中使用一致的日志格式和級別,以提高代碼的可讀性和可維護性。
記錄異常的堆棧跟蹤:在記錄錯誤或異常時,包含堆棧跟蹤以幫助調試。
合理地使用調試日志:僅在需要時使用 DEBUG 級別,否則會產生大量噪音。
定期審查日志:定期審查日志以查找錯誤、警告或其他需要注意的信息。
代碼示例
以下是一個使用 Python Logging 模塊的簡單示例:
import logging
# 創建一個 logger,傳遞名稱為 my_app
logger = logging.getLogger("my_app")
# 設置日志級別為 INFO
logger.setLevel(logging.INFO)
# 創建一個流處理器,將日志消息輸出到 stdout
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
# 創建一個格式器
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
# 將處理器添加到 logger
logger.addHandler(handler)
# 記錄一條 INFO 級別的日誌信息
logger.info("This is an info message")
登錄后復制
通過遵循這些最佳實踐,你可以有效地使用 Python Logging 模塊記錄應用程序中的事件,提高代碼的可維護性、可讀性和可調試性。






