python logging日誌列印過程解析
阿新 • • 發佈:2020-01-09
一、 基礎使用
1.1 logging使用場景
日誌是什麼?這個不用多解釋。百分之九十的程式都需要提供日誌功能。Python內建的logging模組,為我們提供了現成的高效好用的日誌解決方案。但是,不是所有的場景都需要使用logging模組,下面是Python官方推薦的使用方法:
任務場景 | 最佳工具 |
---|---|
普通情況下,在控制檯顯示輸出 | print() |
報告正常程式操作過程中發生的事件 | logging.info()(或者更詳細的logging.debug()) |
發出有關特定事件的警告 | warnings.warn()或者logging.warning() |
報告錯誤 | 彈出異常 |
在不引發異常的情況下報告錯誤 | logging.error(),logging.exception()或者logging.critical() |
logging模組定義了下表所示的日誌級別,按事件嚴重程度由低到高排列(注意是全部大寫!因為它們是常量。):
級別 | 級別數值 | 使用時機 |
---|---|---|
DEBUG | 10 | 詳細資訊,常用於除錯。 |
INFO | 20 | 程式正常執行過程中產生的一些資訊。 |
WARNING | 30 | 警告使用者,雖然程式還在正常工作,但有可能發生錯誤。 |
ERROR | 40 | 由於更嚴重的問題,程式已不能執行一些功能了。 |
CRITICAL | 50 | 嚴重錯誤,程式已不能繼續執行。 |
預設級別是WARNING,表示只有WARING和比WARNING更嚴重的事件才會被記錄到日誌內,低級別的資訊會被忽略。因此,預設情況下,DEBUG和INFO會被忽略,WARING、ERROR和CRITICAL會被記錄。
有多種方法用來處理被跟蹤的事件。最簡單的方法就是把它們列印到終端控制檯上。或者將它們寫入一個磁碟檔案內。
1.2 簡單範例
在什麼都不配置和設定的情況下,logging會簡單地將日誌列印在顯示器上,如下例所示:
import logging logging.warning('Watch out!') # 訊息會被列印到控制檯上 logging.info('I told you so') # 這行不會被列印,因為級別低於預設級別
如果,將上面的程式碼放在一個腳本里並執行,結果是:
WARNING:root:Watch out!
1.3 高階使用
import logging #建立logger記錄器 logging.basicConfig(filename='example.log',level=logging.DEBUG) logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG) #建立一個控制檯處理器,並將日誌級別設定為debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) #建立formatter格式化器 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') #將formatter 新增到ch處理器 ch.setFormatter(formatter) #將ch新增到logger logger.addHandler(ch) #然後就可以開始使用了 # logger.debug('debug message') #logger.info('info message') # logger.warning('warn message') # logger.error('error message') # logger.critical('critical message') def Logss(): #要列印的資訊 a = "3" logger.info(a) Logss()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。