1. 程式人生 > >phthon 基礎 7.3 logging 日誌模塊

phthon 基礎 7.3 logging 日誌模塊

oot asi 程序 打印 %d 很多 format 運行 ica

一. logging 的使用 日誌是我們排查問題的關鍵利器,寫好日誌記錄,當我們發生問題時,可以快速定位代碼範圍進行修改。python有給我們開發者提供好的日誌模塊,下面我們就來介紹一下logging模塊: import logging #從上往下,日誌級別逐漸升高 logging.debug(‘this is debug message‘) logging.info(‘this is info message‘) logging.warning(‘this is warning message‘) logging.error(‘this is error message‘) logging.critical(‘this is critical message‘)
>>> WARNING:root:this is warning message ERROR:root:this is error message CRITICAL:root:this is critical message debug:詳細的信息,通常只出現在診斷問題上。 info:確認一切按預期運行 warning:一個警告,可能會有一些意想不到的事情發生了,或表明一些問題在不久的將來(例如,磁盤空間低)。這個軟件還能按預期工作。 error:一個更嚴重的問題,軟件沒能執行一些功能 critical:一個嚴重的錯誤,這表明程序本身可能無法繼續運行 默認logging的日誌級別為info,一般基本上所有程序都是這個級別,有助於我們排查問題,但是當發生問題,我們沒法定位問題,很多情況下我們需要把日誌級別提升到debug級別,那又怎麽辦呢? 二. 通過logging.basicConfig 函數對日誌的輸出格式及方式做相關配置。現實工作中,往往我們是要把日誌寫在日誌文件中的,那怎麽樣做呢?看如下代碼: #通過logging.basicConfig 函數 把日誌寫在文件中
logging.basicConfig(level=logging.DEBUG,format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘ ,datefmt=‘ %Y/%m/%d %H:%M:%S‘, filename=‘lzc.log‘, filemode=‘w+‘) logging.debug(‘this is debug message‘) logging.info(‘this is info message‘) logging.warning(‘this is warning message‘)
logging.error(‘this is error message‘) logging.critical(‘this is critical message‘) 打開生成的日誌文件 lzc.log 2017/11/10 04:34:10 logging ???.py[line:23] DEBUG this is debug message 2017/11/10 04:34:10 logging ???.py[line:24] INFO this is info message 2017/11/10 04:34:10 logging ???.py[line:25] WARNING this is warning message 2017/11/10 04:34:10 logging ???.py[line:26] ERROR this is error message 2017/11/10 04:34:10 logging ???.py[line:27] CRITICAL this is critical message 三。主要是通過logging.basicConfig 函數進行操作,現在我們來介紹該函數參數的用法: level :設置日誌級別,默認為logging.WARNING filename:指定日誌文件名 filemode:和file函數意義相同,指定日誌文件的打開模式,‘w‘或‘a‘ format:指定輸出的格式和內容,format可以輸出很多有用信息,如上例所示: %(levelname)s:打印日誌級別名稱 %(filename)s:打印當前執行程序名 %(funcName)s:打印日誌的當前函數 %(lineno)d:打印日誌的當前行號 %(asctime)s:打印日誌的時間 %(thread)d:打印線程ID %(message)s:打印日誌信息 datefmt:指定時間格式,同time.strftime() stream:指定將日誌的輸出流,可以指定輸出到 sys.stderr,sys.stdout 或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略 logging.getLogger([name]):創建一個日誌對象: 返回一個logger實例,如果沒有指定name,返回root logger。只要name相同,返回的logger 實例都是同一個而且只有一個,即name和logger 實例是一一對應的。這意味著,無需把logger實例在各個模塊中傳遞。只要知道name,就能得到同一個logger實例。 logging.getLogger(__name__) 在上述實例中__name__就指的是__main__.

phthon 基礎 7.3 logging 日誌模塊