官方介紹
logging library
? ??API -?https://docs.python.org/3/library/logging.html
? ??config -?https://docs.python.org/3/library/logging.config.html
? ??handlers -?https://docs.python.org/3/library/logging.handlers.html
logging howto
????https://docs.python.org/3/howto/logging.html
????https://docs.python.org/3/howto/logging-cookbook.html
如若英文文檔閱讀能力不夠,可轉(zhuǎn)換中文簡(jiǎn)體快速查閱绑蔫,不過還是建議直接閱讀英文版
個(gè)人理解
logging模塊是python的日志記錄工具幌羞,其提供了很好的接口和使用規(guī)范码邻,方便應(yīng)用python時(shí)對(duì)日志進(jìn)行系統(tǒng)管理哪替。
logging模塊即是對(duì)print函數(shù)的針對(duì)性封裝饵逐,并根據(jù)任務(wù)或者實(shí)際需要定義出不同級(jí)別的適用性穆端,一般如下:
????debug()? ?
????info()
? ??warning()
? ??error()
? ??critical()
其處理通常直接輸出到控制臺(tái)困曙,但在實(shí)際應(yīng)用時(shí)更傾向于寫入磁盤文件以便追蹤查詢
?一句話恰矩,logging相對(duì)print來說可以更好控制輸出在哪個(gè)地方记盒,怎么輸出及控制消息級(jí)別來過濾掉那些不需要的信息
簡(jiǎn)單應(yīng)用
1)單模塊應(yīng)用
import logging
logging.info('Hello')
logging.warning('World')
結(jié)果:WARNING:root:World
其會(huì)以默認(rèn)basicConfig()的形式輸出到終端,注意默認(rèn)level是warning
2)多模塊應(yīng)用
注意:由?basicConfig()?設(shè)置的消息默認(rèn)格式為:
severity:logger name:message
3)更改輸出形式
如:logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
4)插入日志輸出日期&時(shí)間
日志庫(kù)模塊化
1)Logger(記錄器)
getLogger()返回對(duì)具有指定名稱的記錄器實(shí)例的引用(如果已提供)外傅,或者如果沒有則返回?root?纪吮。
logger=logging.getLogger(__name__)
logger.setLevel()
2)Handler(處理器)
logger.addHandler 和?logger.removeHandler
標(biāo)準(zhǔn)庫(kù)包含很多處理器類型(參見?有用的處理器?);教程主要使用?StreamHandler?和?FileHandler?萎胰。
可配置接口有:setLevel()碾盟、setFormatter()、addFilter()技竟、removeFilter()
3)Filter(過濾器)
logger.addFilter() 和 logger.removeFilter()
4)Formatter(格式器)
logging.Formatter()
格式化器對(duì)象配置日志消息的最終順序冰肴、結(jié)構(gòu)和內(nèi)容。 與?logging.Handler?類不同榔组,應(yīng)用程序代碼可以實(shí)例化格式器類熙尉,但如果應(yīng)用程序需要特殊行為,則可能會(huì)對(duì)格式化器進(jìn)行子類化定制搓扯。構(gòu)造函數(shù)有三個(gè)可選參數(shù) —— 消息格式字符串检痰、日期格式字符串和樣式指示符。logging.Formatter.__init__(fmt=None,?datefmt=None,?style='%')
常用格式 - 記錄時(shí)間锨推、消息的嚴(yán)重性以及消息的內(nèi)容:
'%(asctime)s - %(levelname)s - %(message)s'
5)應(yīng)用示例