先來一段程序告知python怎樣配置日誌。html
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)
分析代碼:python
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():添加一個處理器
如下是由低到高,默認設置等級後不顯示低等級的消息flask