python日誌配置

二十一發表於2019-02-16

先來一段程式告知python怎樣配置日誌。

logging.basicConfig(level=logging.DEBUG)  # 設定日誌級別
# 建立日誌記錄器,指明日誌儲存的路徑、每個日誌檔案的最大大小、儲存的日誌檔案個數上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
# 建立日誌記錄的格式 日誌等級 輸入日誌資訊的檔名 行數 日誌資訊
formatter = logging.Formatter(`%(levelname)s %(filename)s:%(lineno)d %(message)s`)
# 為剛建立的日誌記錄器設定日誌記錄格式
file_log_handler.setFormatter(formatter)
# 為全域性的日誌工具物件(flask app使用的)新增日誌記錄器
logging.getLogger().addHandler(file_log_handler)

分析程式碼:

basicConfig():對日誌系統進行一次性配置,以下是可以指定的關鍵字引數
    filename:指定日誌輸出目標檔案的檔名,指定該設定項後日志信心就不會被輸出到控制檯了
    filemode:指定日誌檔案的開啟模式,預設為`a`。需要注意的是,該選項要在filename指定時才有效
    format:指定日誌格式字串,即指定日誌輸出時所包含的欄位資訊以及它們的順序。logging模組定義的格式欄位下面會列出。
    datefmt:指定日期/時間格式。需要注意的是,該選項要在format中包含時間欄位%(asctime)s時才有效
    level:指定日誌器的日誌級別
    stream:指定日誌輸出目標stream,如sys.stdout、sys.stderr以及網路stream。需要說明的是,stream和filename不能同時提供,否則會引發 ValueError異常
    handlers:Python 3.3中新新增的配置項。該選項如果被指定,它應該是一個建立了多個Handler的可迭代物件,這些handler將會被新增到root logger。需要說明的是:filename、stream和handlers這三個配置項只能有一個存在,不能同時出現2個或3個,否則會引發ValueError異常。
    
RotatingFileHandler():輪轉檔案處理器,將日誌訊息傳送到磁碟檔案,並支援日誌檔案按大小切割
FileHandler():將日誌訊息傳送到磁碟檔案,預設情況下檔案大小會無限增長
StreamHandler():將日誌訊息傳送到輸出到Stream,如std.out, std.err或任何file-like物件。

Formatter():格式器,決定日誌記錄的最終輸出格式
    %(levelname)s:日誌記錄的級別
    %(message)s:日誌記錄的內容
    %(asctime)s:日誌記錄的時間
    %(pathname)s:呼叫日誌記錄檔案的全路徑
    %(filename)s:pathname的檔名部分
    %(module)s:pathname的檔名,不包含字尾
    %(funcName)s:呼叫日誌記錄檔案的函式名
getLogger():建立一個Logger物件
    addHandler():新增一個處理器

日誌級別

以下是由低到高,預設設定等級後不顯示低等級的訊息

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL(很少使用)

參考文件:https://www.cnblogs.com/yyds/…

相關文章