1.為什么要用logging模塊
在實(shí)際應(yīng)用中,日志文件十分重要,通過(guò)日志文件,我們知道程序運(yùn)行的細(xì)節(jié);同時(shí),當(dāng)程序出問(wèn)題時(shí),我們也可以通過(guò)日志快速定位問(wèn)題所在。在我們寫程序時(shí),也可以借助logging模塊的輸出信息來(lái)調(diào)試代碼。
但是很多人還是在程序中使用print()函數(shù)來(lái)輸出一些信息,比如:
print'Startreadingdatabase'
records=model.read_recrods()
print'#records',records
print'Updatingrecord...'
model.update_records(records)
print'done'
這樣用的話缺點(diǎn)很明顯,當(dāng)程序?qū)懞眠\(yùn)行時(shí),我們要把這些print()函數(shù)刪掉,在簡(jiǎn)單的的程序中用還行,當(dāng)程序比較復(fù)雜時(shí),這個(gè)辦法很低效。
如果使用logging模塊,看看效果:
importlogging
logging.basicConfig(level=logging.INFO)
logger=logging.getLogger(__name__)
logger.info('Startreadingdatabase')
#readdatabasehere
records={'john':55,'tom':66}
logger.debug('Records:%s',records)
logger.info('Updatingrecords...')
#updaterecordshere
logger.info('Finishupdatingrecords')
運(yùn)行結(jié)果如下:
INFO:__main__:Startreadingdatabase
INFO:__main__:Updatingrecords...
INFO:__main__:Finishupdatingrecords
你也許會(huì)問(wèn),這和print()函數(shù)有什么區(qū)別呢?區(qū)別就在于,logging模塊可以通過(guò)改變level來(lái)控制一些語(yǔ)句是否被輸出,比如當(dāng)我們把level改成DEBUG級(jí)別:
logging.basicConfig(level=logging.DEBUG)
得到輸出如下:
INFO:__main__:Startreadingdatabase
DEBUG:__main__:Records:{'john':55,'tom':66}
INFO:__main__:Updatingrecords...
INFO:__main__:Finishupdatingrecords
2.logging模塊介紹
logging模塊是python自帶的一個(gè)包,因此在使用的時(shí)候,不必安裝,只需要import即可。有5個(gè)level,分別是debug,主要是查看一下程序運(yùn)行的信息,一般是調(diào)試程序要看的信息;info,是我們看程序是否如預(yù)料執(zhí)行的信息;warn,意料之外的,但是不影響程序運(yùn)行;error和critical就是一些比較嚴(yán)重的問(wèn)題,會(huì)影響程序運(yùn)行。默認(rèn)leval是warn,這個(gè)時(shí)候debug級(jí)別和info級(jí)別就不會(huì)被輸出到日志里了。如果想要看到這些信息,就需要進(jìn)行一些設(shè)置。
3.基礎(chǔ)設(shè)置
我們主要調(diào)用basicConfig(***kwargs*)這個(gè)函數(shù)對(duì)logging進(jìn)行設(shè)置。
常用的參數(shù)如下:
·level:主要調(diào)整logging的級(jí)別
·filename:輸出日志的路徑
·filemode:直接寫入還是追加寫入
·format:輸出的格式
我們通過(guò)調(diào)整format,可以輸出我們想要的格式,比如:
importlogging
logging.basicConfig(format='%(asctime)s-%(message)s',datefmt='%d-%b-%y%H:%M:%S')
logging.warning('Adminloggedout')
結(jié)果是:
12-Jul-1820:53:19-Adminloggedout
這就是在format參數(shù)中設(shè)置了時(shí)間的,所以得到了時(shí)間,我們可以輸出多種想要的信息
以上內(nèi)容為大家介紹了Python中Logging模塊使用詳情,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/