logging模塊簡介
logging模塊是Python內(nèi)置的標(biāo)準(zhǔn)模塊,主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級、日志保存路徑、日志文件回滾等;相比print,具備如下優(yōu)點:
可以通過設(shè)置不同的日志等級,在release版本中只輸出重要信息,而不必顯示大量的調(diào)試信息;
print將所有信息都輸出到標(biāo)準(zhǔn)輸出中,嚴(yán)重影響開發(fā)者從標(biāo)準(zhǔn)輸出中查看其它數(shù)據(jù);logging則可以由開發(fā)者決定將信息輸出到什么地方,以及怎么輸出;
將我們記錄內(nèi)容從記錄方式中真正分離,保證了軟件不同部分的合作。舉個例子,他允許一個框架或者庫的開發(fā)者增加日志并且讓系統(tǒng)管理員或者負(fù)責(zé)運(yùn)行配置的人員決定稍后應(yīng)該記錄什么。
logging模塊主要分為四個部分:
Loggers:提供應(yīng)用程序直接使用的接口
Handlers:將Loggers產(chǎn)生的日志傳到指定位置
Filters:對輸出日志進(jìn)行過濾
Formatters:控制輸出格式
1,記錄器(Logger)
記錄器是開發(fā)者經(jīng)常交互的對象,那么主要的API說明了我們想要記錄的內(nèi)容。
舉個記錄器的例子,我們可以分類請求發(fā)出的一條信息,而不用擔(dān)心他們是如何從哪里被發(fā)出的。
2,日志記錄
日志記錄時logging模塊用來滿足所有需求信息的包。他們包含了需要記錄日志的地方,變化的字符串,參數(shù),請求的信息隊列等信息。
他們都是被記錄的對象,每次我們調(diào)用記錄器時,都會生成這些對象。但是這些對象是如何序列化到流中的呢?那就是處理器。
3,處理器
處理器是將日志記錄發(fā)送到其他輸出終端,他們獲取日志記錄并用相關(guān)函數(shù)中處理他們。
比如,一個文件處理器將會獲取一條記錄,并且將它添加到文件中。
標(biāo)準(zhǔn)的logging模塊已經(jīng)具備了多種內(nèi)置的處理器。例如:
多種文件處理器(TimeRotated,SizeRotated,Watched),可以寫入文件中
StreamHandler輸出目標(biāo)流比如stdout或stderr
SMTPHandler通過email發(fā)送日志記錄
SocketHandler將日志文件發(fā)送到流套接字
SyslogHandler、NTEventHandler、HTTPHandler及MemoryHandler等
4,格式器(Formatter)
各時期負(fù)責(zé)將豐富的元數(shù)據(jù)日志記錄轉(zhuǎn)換為字符串,如果什么都沒有提供,將會有個默認(rèn)的格式器。
一般的格式器類由logging庫提供,采用模板和風(fēng)格作為輸入。然后占位符可以在一個logRecord對象中聲明所有屬性。
5,過濾器(Filters)
我們?nèi)罩竟ぞ叩淖詈笠粋€對象就是過濾器。
過濾器允許對應(yīng)該發(fā)送的日志記錄進(jìn)行細(xì)粒度控制。多種過濾器能同時應(yīng)用在記錄器和處理器中。對于一條發(fā)送的日志來說,所有的過濾器都應(yīng)該通過這條記錄。
用戶可以聲明他們自己的過濾器作為對象,使用filter方法獲取日志記錄作為輸入,反饋True/False作為輸出。
以上內(nèi)容為大家介紹了python重要的日志模塊logging,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。