這篇文章給大家分享的是有關(guān)Python中如何使用logging的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)建站專(zhuān)注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)、網(wǎng)站重做改版、南靖網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為南靖等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
import logging
'''
默認(rèn)情況下Python的logging模塊將日志打印到了標(biāo)準(zhǔn)輸出中,且只顯示了大于等于WARNING級(jí)別的日志,
這說(shuō)明默認(rèn)的日志級(jí)別設(shè)置為WARNING(日志級(jí)別等級(jí)CRITICAL > ERROR > WARNING > INFO > DEBUG),
默認(rèn)的日志格式為日志級(jí)別:Logger名稱(chēng):用戶(hù)輸出消息。
可見(jiàn)在logging.basicConfig()函數(shù)中可通過(guò)具體參數(shù)來(lái)更改logging模塊默認(rèn)行為,可用參數(shù)有
filename:用指定的文件名創(chuàng)建FiledHandler(后邊會(huì)具體講解handler的概念),這樣日志會(huì)被存儲(chǔ)在指定的文件中。
filemode:文件打開(kāi)方式,在指定了filename時(shí)使用這個(gè)參數(shù),默認(rèn)值為“a”還可指定為“w”。
format:指定handler使用的日志顯示格式。
datefmt:指定日期時(shí)間格式。
level:設(shè)置rootlogger(后邊會(huì)講解具體概念)的日志級(jí)別。
stream:用指定的stream創(chuàng)建StreamHandler??梢灾付ㄝ敵龅絪ys.stderr,sys.stdout或者文件(f=open('test.log','w')),默認(rèn)為sys.stderr。
若同時(shí)列出了filename和stream兩個(gè)參數(shù),則stream參數(shù)會(huì)被忽略。
format參數(shù)中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 數(shù)字形式的日志級(jí)別
%(levelname)s 文本形式的日志級(jí)別
%(pathname)s 調(diào)用日志輸出函數(shù)的模塊的完整路徑名,可能沒(méi)有
%(filename)s 調(diào)用日志輸出函數(shù)的模塊的文件名
%(module)s 調(diào)用日志輸出函數(shù)的模塊名
%(funcName)s 調(diào)用日志輸出函數(shù)的函數(shù)名
%(lineno)d 調(diào)用日志輸出函數(shù)的語(yǔ)句所在的代碼行
%(created)f 當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示
%(relativeCreated)d 輸出日志信息時(shí)的,自Logger創(chuàng)建以 來(lái)的毫秒數(shù)
%(asctime)s 字符串形式的當(dāng)前時(shí)間。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒
%(thread)d 線(xiàn)程ID??赡軟](méi)有
%(threadName)s 線(xiàn)程名。可能沒(méi)有
%(process)d 進(jìn)程ID。可能沒(méi)有
%(message)s用戶(hù)輸出的消息
logging庫(kù)提供了多個(gè)組件:Logger、Handler、Filter、Formatter。Logger對(duì)象提供應(yīng)用程序可直接使用的接口,Handler發(fā)送日志到適當(dāng)?shù)哪康牡?,F(xiàn)ilter提供了過(guò)濾日志信息的方法,F(xiàn)ormatter指定日志顯示格式。
Logger是一個(gè)樹(shù)形層級(jí)結(jié)構(gòu),輸出信息之前都要獲得一個(gè)Logger(如果沒(méi)有顯示的獲取則自動(dòng)創(chuàng)建并使用root Logger)。
logger = logging.getLogger()返回一個(gè)默認(rèn)的Logger也即root Logger,并應(yīng)用默認(rèn)的日志級(jí)別、Handler和Formatter設(shè)置。
當(dāng)然也可以通過(guò)Logger.setLevel(lel)指定最低的日志級(jí)別,可用的日志級(jí)別有l(wèi)ogging.DEBUG、logging.INFO、logging.WARNING、logging.ERROR、logging.CRITICAL。
Logger.debug()、Logger.info()、Logger.warning()、Logger.error()、Logger.critical()輸出不同級(jí)別的日志,只有日志等級(jí)大于或等于設(shè)置的日志級(jí)別的日志才會(huì)被輸出。
'''
logging.basicConfig(level=logging.DEBUG, # 配置日志級(jí)別,默認(rèn)輸出debug等級(jí)及等級(jí)更高的內(nèi)容
format='%(asctime)s--->%(filename)s[line:%(lineno)d]====>%(levelname)s::::%(message)s', # 配置日志顯示格式
datefmt='%a, %d %b %Y %H:%M:%S', # 配置時(shí)間格式
filename='test.log', # 配置文件路徑
filemode='a') # 配置文件權(quán)限
logging.debug('debug message')
logging.warning('warning message')
def logger():
logger = logging.getLogger() # 創(chuàng)建一個(gè)大對(duì)象
fh = logging.FileHandler("test_log") # 向文件里發(fā)送內(nèi)容,并且給個(gè)參數(shù),作用是:定義一個(gè)文件名,往文件里寫(xiě)入內(nèi)容
ch=logging.StreamHandler() #向屏幕上發(fā)送內(nèi)容
fm = logging.Formatter("%(asctime)s--->%(filename)s[line:%(lineno)d]====>%(levelname)s::::%(message)s") # 這個(gè)也是一個(gè)對(duì)象,作用是:定義日志格式
fh.setFormatter(fm) # 往文件里寫(xiě)內(nèi)容
ch.setFormatter(fm) #往屏幕上輸出內(nèi)容
logger.addHandler(fh) # 對(duì)象,類(lèi)似于吸別人內(nèi)力,把fh吃掉
logger.addHandler(ch) #對(duì)象,類(lèi)似于吸別人內(nèi)力,把ch吃掉
logger.setLevel("DEBUG") # 設(shè)置日志級(jí)別,控制日志輸入多少條信息
return logger
logger = logger() # 這個(gè)日志就做成了一個(gè)接口,在其它地方,直接調(diào)用他就可以啦!
logger.debug("debug") # 輸出日志的級(jí)別
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
感謝各位的閱讀!關(guān)于“Python中如何使用logging”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!