日誌是乙個系統的重要組成部分,用以記錄使用者操作、系統執行狀態和錯誤資訊。日誌記錄的好壞直接關係到系統出現問題時定位的速度。logging模組python2.3版本開始成為python標準庫的一部分。
在最簡單的使用中,我們直接匯入logging模組,然後呼叫它的debug、info、warn、error和critical等函式記錄日誌。預設情況下,logging模組將日誌列印到螢幕終端,日誌級別為warnning,也就是說日誌級別大於等於warning的日誌才會被顯示
#default_logging.py!/usr/bin/python3
import
logging
logging.debug(
'debug message')
logging.info(
'info message')
logging.warn(
'warn message')
logging.error(
'error.message')
logging.critical(
'critical.message
')
程式執行結果如下:
$ python3 default_logging.py日誌級別是乙個邏輯上的概念,用來區分日誌的重要程度。將日誌分為不停級別的日誌後,一方面可以在大多數時間只儲存級別比較高的日誌來提高效能;領一方面也便於日誌的分析。例如,從乙個超大的日誌檔案中,快速找出幾條錯誤資訊。warning:root:warn message
error:root:error.message
critical:root:critical.message
在python的logging模組中,日誌分為5個級別:
日誌級別
權重含義
caitical
50嚴重錯誤,表名軟體已不能繼續執行了
error
40發生嚴重的錯誤,必須馬上處理
warning
30應用程式可以容忍這些資訊,軟體還是在正常工作,不過它們應該被檢查及修復,否則將在不久的將來發生問題
info
20證明事情按預期工作,突出強調應用程式的執行過程
debug
10詳細資訊,只有開發人員除錯程式時才需要關注的事情
在使用logging記錄日誌之前,我們可以進行一些簡單的配置,如下:
#上面我們通過basicconfig方法對日誌進行了簡單的配置,我們也可以進行更加複雜的日誌配置。在這之前先了解logging模組中的幾個概念:!/usr/bin/python3
import
logging
logging.basicconfig(filename='
', level=logging.info)
logging.debug(
'debug message')
logging.info(
'info message')
logging.warn(
'warn message')
logging.error(
'error.message')
logging.critical(
'critical.message
')
在典型的使用場景中,乙個日誌記錄器使用乙個日誌處理器,乙個日誌處理器使用乙個日誌格式化
python的logging模組提供給你了多種方式來配置日誌。對於比較簡單的指令碼,可以直接使用basicconfig在**中配置日誌。對於比較複雜的專案,可以將日誌的配置儲存在乙個配置檔案中,然後在**中使用fileconfig函式讀取配置檔案。
在這個例子中,日誌檔案會儲存所有debug級別及以上級別的日誌。每一條日誌包含了列印日誌的時間,日誌的級別和日誌的內容
#對於複雜的專案,一般將日誌配置儲存到配置檔案中。如下:logging.cnf!/usr/bin/python3
import
logging
logging.basicconfig(
filename='',
level=logging.debug,
format='
%(asctime)s : %(levelname)s : %(message)s')
logging.debug(
'debug message')
logging.info(
'info message')
logging.warn(
'warn message')
logging.error(
'error.message')
logging.critical(
'critical.message
')
#python**中使用logging.config模組的fileconfig函式載入日誌配置首先在[loggers]宣告乙個名為root的logger
[loggers]
keys =root
#在[handlers]中宣告乙個名為logfile的handler
[handlers]
keys =logfile
#在[formatters]中宣告乙個名為generic的formatter
[formatters]
keys =generic
#在[logger_root]中定義root這個logger所使用的handler
[logger_root]
handlers =logfile
#在[handler_logfile]中定義handler輸出日誌方式、日誌檔案的切換時間等
[handler_logfile]
class =handlers.timedrotatingfilehandler
args = ('',)
level =debug
format =generic
#[在formatter_generic]中定義了日誌的格式,包括日誌產生的時間、日誌級別、產生日誌的檔名和行號等資訊
[formatter_generic]
format = '
%(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s
'
#!/usr/bin/python3
import
logging
import
logging.config
logging.config.fileconfig(
'logging.cnf')
logging.debug(
'debug message')
logging.info(
'info message')
logging.warn(
'warn message')
logging.error(
'error.message')
logging.critical(
'critical.message
')
python 記錄日誌logging
在專案開發中,往往要記錄日誌檔案。用python記錄日誌有兩種方式 1 利用python 自帶的logging庫,例如 coding utf 8 import osimport codecs import datetime import logging 封裝logging日誌 class logfi...
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...
python 記錄日誌logging
在專案開發中,往往要記錄日誌檔案。用python記錄日誌有兩種方式 1 利用python 自帶的logging庫,例如 coding utf 8 import osimport codecs import datetime import logging 封裝logging日誌 class logfi...