python logging 模塊基礎
logging 模塊的基本原理是建立一個記錄器(logger),然后通過調用 logger 的方法來記錄消息。記錄器有一個級別,它決定了將記錄哪些消息。logging 模塊定義了幾個預定義的級別,包括 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。
import logging # 創建一個名為 "my_logger" 的記錄器,并設置其級別為 INFO logger = logging.getLogger("my_logger") logger.setLevel(logging.INFO)
登錄后復制
記錄器可以通過其方法來記錄消息:
# 記錄一條 INFO 級別的消息 logger.info("This is an INFO message") # 記錄一條 WARNING 級別的消息 logger.warning("This is a WARNING message") # 記錄一條 ERROR 級別的消息 logger.error("This is an ERROR message")
登錄后復制
日志處理程序
日志處理程序(handler)將日志消息寫入特定目標,例如控制臺、文件或網絡服務器。logging 模塊提供了幾個預定義的處理程序:
# 創建一個控制臺處理程序 handler = logging.StreamHandler() # 創建一個文件處理程序,將日志寫入文件 "my_log.txt" handler = logging.FileHandler("my_log.txt")
登錄后復制
處理程序可以通過添加到記錄器來附加到記錄器:
# 將處理程序添加到記錄器 logger.addHandler(handler)
登錄后復制
日志格式器
日志格式器(fORMatter)控制日志消息的外觀。logging 模塊提供了幾個預定義的格式器:
# 創建一個基本格式器 formatter = logging.BasicFormatter() # 使用自定義格式字符串創建自定義格式器 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
登錄后復制
格式器可以通過添加到處理程序來附加到處理程序:
# 將格式器添加到處理程序 handler.setFormatter(formatter)
登錄后復制
常見問題
1. 如何在 Python 腳本中設置日志記錄級別?
import logging # 設置根日志記錄器的級別為 INFO logging.basicConfig(level=logging.INFO)
登錄后復制
2. 如何記錄異常?
try: # 嘗試執行一些代碼 except Exception as e: # 記錄異常 logger.error(e, exc_info=True)
登錄后復制
3. 如何禁用特定處理程序?
# 禁用控制臺處理程序 logger.removeHandler(handler)
登錄后復制
4. 如何使用自定義日志格式?
# 使用自定義格式字符串創建自定義格式器 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") # 將格式器添加到處理程序 handler.setFormatter(formatter)
登錄后復制
5. 如何捕獲未捕獲的異常并將其記錄到文件?
import sys import logging def exception_handler(type, value, traceback): # 記錄未捕獲的異常 logger.error(value, exc_info=(type, value, traceback)) sys.excepthook = exception_handler
登錄后復制
結論
Python logging 模塊是一個功能強大的工具,可以幫助您輕松地記錄和處理應用程序消息。通過掌握其關鍵知識點,您可以有效地使用 logging 模塊來調試、故障排除和分析應用程序的行為。