首頁 > 軟體

 Python 中 logging 模組使用詳情

2022-03-03 13:00:12

1.為什麼要用logging模組

在實際應用中,紀錄檔檔案十分重要,通過紀錄檔檔案,我們知道程式執行的細節;同時,當程式出問題時,我們也可以通過紀錄檔快速定位問題所在。在我們寫程式時,也可以藉助 logging 模組的輸出資訊來偵錯程式碼。

但是很多人還是在程式中使用print()函數來輸出一些資訊,比如:

print 'Start reading database'
records = model.read_recrods()
print '# records', records
print 'Updating record ...'
model.update_records(records)
print 'done'

這樣用的話缺點很明顯,當程式寫好執行時,我們要把這些print()函數刪掉,在簡單的的程式中用還行,當程式比較複雜時,這個辦法很低效。

如果使用logging模組,看看效果

import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

logger.info('Start reading database')
# read database here
records = {'john': 55, 'tom': 66}
logger.debug('Records: %s', records)
logger.info('Updating records ...')
# update records here
logger.info('Finish updating records')

執行結果如下:

INFO:__main__:Start reading database
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records

你也許會問,這和print()函數有什麼區別呢?區別就在於,logging模組可以通過改變level來控制一些語句是否被輸出,比如當我們把level改成DEBUG級別:

logging.basicConfig(level=logging.DEBUG)

得到輸出如下:

INFO:__main__:Start reading database
DEBUG:__main__:Records: {'john': 55, 'tom': 66}
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records

2.logging模組介紹

logging 模組是python自帶的一個包,因此在使用的時候,不必安裝,只需要import即可。有5個level,分別是debug,主要是檢視一下程式執行的資訊,一般是偵錯程式要看的資訊;info,是我們看程式是否如預料執行的資訊;warn,意料之外的,但是不影響程式執行;errorcritical就是一些比較嚴重的問題,會影響程式執行。預設leval是warn,這個時候debug級別和info級別就不會被輸出到紀錄檔裡了。如果想要看到這些資訊,就需要進行一些設定。

3.基礎設定

我們主要呼叫basicConfig(***kwargs*)這個函數對logging進行設定。

常用的引數如下:

  • level:主要調整logging的級別
  • filename:輸出紀錄檔的路徑
  • filemode:直接寫入還是追加寫入
  • format:輸出的格式

我們通過調整format,可以輸出我們想要的格式,比如:

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
logging.warning('Admin logged out')

結果是:

12-Jul-18 20:53:19 - Admin logged out

這就是在format引數中設定了時間的,所以得到了時間,我們可以輸出多種想要的資訊

總結:

本文主要介紹了logging模組的基礎用法,除非是自己寫的小指令碼中我們使用print()函數,其他情況下最好還是用logging模組來列印資訊,輸出紀錄檔吧。

到此這篇關於 Python 中 logging 模組使用詳情的文章就介紹到這了,更多相關 Python 中 logging 模組使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com