python常用模組 logger模組

2022-03-14 07:11:29 字數 3969 閱讀 1220

python的logging模組提供了通用的日誌系統,熟練使用logging模組可以方便開發者開發第三方模組或者是自己的python應用。

python使用logging模組記錄日誌涉及四個主要的類:

logger:提供了應用程式可以直接使用的介面;

handler:將(logger建立的)日誌記錄傳送到合適的目的地。

filter:提供一種優雅地方式決定乙個日誌記錄是否傳送到handler。

formatter:指定日誌記錄輸出的具體格式。formatter的構造方法需要兩個引數:訊息的格式字串和日期字串,這兩個引數都是可選的。

logging.getlogger([name]):返回乙個logger物件,如果沒有指定名字將返回root logger。

logging.basicconfig():用預設formatter為日誌系統建立乙個streamhandler,設定基礎配置並加到root logger中

日誌列印有5中模式:

logging.debug():除錯模式,不是必須出現,但是如果有問題需要借助它的資訊。

logging.info():資訊模式,必須出現但是對程式的正常執行沒有影響。

logging.warning():警告模式,不會造成程式的錯誤,但可能會出問題的時候列印。

logging.erroe():錯誤模式,程式出錯了。

loggingcirtical():批判模式,程式崩潰了。

每個程式在輸出資訊之前都要獲得乙個logger,logger通常對應了程式的模組名。

log = logging.getlogger("chat.gui")

而核心模組可以這樣:

log = logging.getlogger("chat.kernel")

logger.setlevel(lel):指定最低的日誌級別,低於lel的級別將會被忽略。debug是最低的內建級別,critical為最高。

logger.addfilter(filt)、logger.removefilter(filt):新增或刪除指定的filter.

logger.addhandler(hdr)、logger.removehandler(hdr):增加或刪除指定的handler

不同模式的執行級別:

>>> import

logging

>>>logging.notset

0>>>logging.debug

10>>>logging.info

20>>>logging.warning

30>>>logging.error

40>>>logging.critical

50

notset < debug < info < warning < error < critical

如果把looger的級別設定為info,那麼小於info級別的日誌不輸出,大於等於info級別的日誌都輸出。

handler物件負責傳送相關的資訊到指定目的地。python的日誌系統有多種handler可以使用。有些handler可以把資訊輸出到控制台,有些logger可以把資訊輸出到檔案,還有些handler可以把資訊傳送到網上,如果覺得不夠用,還可以編寫自己的handler可以通過addhandler()方式新增多個handler

handler.setlevel(lel):指定被處理的資訊級別,低於lel級別的資訊將被忽略。

handler.setformatter():給這個handler選擇乙個格式

handler.addfilter(filt)、handler.removefilter:新增或刪除乙個filter物件。

每個logger可以附加多個handler,下面是幾個常見的:

(1)logging.streamhander:螢幕流物件

(2)logging.filehandler:用於向乙個檔案輸出日誌資訊

formatters

formatter對於設定日誌資訊最後的規則、結構和內容,預設的時間格式為%y-%m-%d %h:%m:%s

import

logging

log=logging.getlogger() #

獲取乙個例項

sh = logging.streamhandler() #

得到乙個螢幕流傳送臺

log.addhandler(sh)

#作用臺關聯到例項

log.warning(

'logger warning message

')#呼叫例項答應資訊

log.error('

logger error message')

#沒有格式化,只有最原始的輸出到螢幕

結果:

logger warning message   #輸出到螢幕

logger error message

下面只單純輸出到檔案:

import

logging

log=logging.getlogger() #

獲取乙個例項

console = logging.filehandler('

test.log

') #控制台

formatter = logging.formatter('

%(asctime)s - %(name)s - %(levelname)s - %(message)s')

log.addhandler(console)

console.setformatter(formatter) #繫結格式

log.warning(

'logger warning message')

log.error(

'logger error message

')

結果:

2017-11-23 20:46:49,396 - root - warning -logger warning message

2017-11-23 20:46:49,396 - root - error - logger error message

綜合例項:

import

logging

logger =logging.getlogger() #例項化乙個logger物件

#建立乙個handler,用於寫入日誌檔案

fh = logging.filehandler('

test.log

') #將相關資訊傳送到目的地

#再建立乙個handler,用於輸出到控制台

ch =logging.streamhandler()

#指定檔案,可以不指定

formatter = logging.formatter('

%(asctime)s - %(name)s - %(levelname)s - %(message)s')

fh.setformatter(formatter)

#檔案控制代碼 綁 格式,

ch.setformatter(formatter)

logger.setlevel(logging.info) 設定檔案的級別,預設vwarning

logger.addhandler(fh)

#logger物件可以新增多個fh和ch物件(logger綁檔案控制代碼)

logger.addhandler(ch)

logger.debug(

'logger debug message

') #

輸出logger.info('

logger info message')

logger.warning(

'logger warning message')

logger.error(

'logger error message')

logger.critical(

'logger critical message

')

python 常用模組

1.告訴直譯器 找模組 import sysunix要絕度路徑 只有第一次匯入執行。name main 2.當做包,必須包含乙個命名為 init py的檔案 模組 3.dir看模組裡有什麼 下劃線開始,不是給模組外部用的。過濾 import copy n for n in dir copy if n...

python常用模組

logging 日誌是我們排查問題的關鍵利器,寫好日誌記錄,當我們發生問題時,可以快速定位 範圍進行修改 logging將日誌列印到螢幕,日誌級別大小關係為 critical error warning info debug notset,當然也可以自己定義日誌級別 預設logging預設的日誌級別...

python常用模組

collections提供了幾個便於使用的資料型別。1 namedtuple 這個資料型別生成可以使用呼叫屬性的方法來訪問元素內容的元祖 import collections cc collections.namedtuple sha x y get cc 1,2 print get.x,get.y...