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