在任何程式中,日誌記錄功能必不可少,它有可以幫助我們追溯程式執行歷史提供參考依據。
今天要實現的日誌記錄功能,使用到了python的內建模組logging,它包含四個日誌等級,從嚴重程度上劃分為:critical、error、warning、info、debug。
除此之外,我們需要知logging預設收集warning以上等級的日誌,預設收集物件為root。
那logging如何使用呢?
首先我們需要匯入該模組:
import logging
接下來建立乙個日誌收集器物件:
#getlogger裡可以帶上收集器物件名稱,例如『xiaoming'
logger = logging.getlogger('
xiaoming
')
有了日誌收集器物件後,我們怎麼知道應該收集哪些日誌呢?所以這裡需要給日誌收集器物件設定乙個日誌收集的等級閾值,比如設定為info,那麼它會收集info及以上等級的日誌,也就包括warning和error,critical。
logger.setlevel('info
')
如果程式當中所有的日誌都被日誌收集器物件成功收集,我們又去**看這些日誌?一般來說,程式都有.log的日誌檔案,當然,儲存到檔案只是一種輸出渠道,還有一種是輸出到控制台,下面我們就來實現寫日誌到檔案的輸出渠道,
#建立檔案輸出渠道
file_handler = logging.filehandler('
test.log
', encoding='
utf-8')
#給檔案輸出渠道設定輸出等級
file_handler.setlevel('
warning
')
沒錯,日誌輸出也要等級的,上面的內容表示只會把日誌收集器中warning和error,critical日誌寫入到檔案,info日誌則不會;它與日誌收集等級並不衝突,乙個限制輸入,乙個限制輸出,
既然要把日誌輸出到test.log檔案中,那每一條日誌記錄得格式又怎麼配置,看下面**:
formatter = logging.formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')
file_handler.setformatter(formatter)
記錄格式定下來後,最後只需要將輸出渠道和日誌收集器繫結即可:
logger.addhandler(file_handler)
到此為止,整個日誌記錄的主要流程全部實現,再封裝一下,在其他地方呼叫即可。
logging模組日誌記錄
coding utf 8 import logging,os from time import strftime now strftime y m d.h.m.s.class log object def init self 檔案的命名 self.logname os.path.join os.pa...
日誌模組 logging模組
logging.debug 通常除錯時用到的日誌資訊 logging.info 證明事情按照預期的那樣工作 longging.warning 表明發生了意外,或者不就得將來發生的問題 如 磁碟滿了 軟體還是正常的工作 longging.error 由於更嚴重的問題導致軟體已經不能繼續執行某些功能 l...
logging日誌模組
日誌級別日誌輸出 將日誌輸出到控制台 log1.py 如下 import logging logging.basicconfig level logging.warning,format asctime s filename s line lineno d levelname s message s...