Python?中的?logging?模塊可以讓你跟蹤代碼運(yùn)行時(shí)的事件,當(dāng)程序崩潰時(shí)可以查看日志并且發(fā)現(xiàn)是什么引發(fā)了錯(cuò)誤。Log?信息有內(nèi)置的層級(jí)——調(diào)試(debugging)、信息(informational)、警告(warnings)、錯(cuò)誤(error)和嚴(yán)重錯(cuò)誤(critical)。你也可以在?logging?中包含?traceback?信息。不管是小項(xiàng)目還是大項(xiàng)目,都推薦在?Python?程序中使用?logging。本文將簡(jiǎn)單清晰地介紹如何使用?logging?模塊。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站運(yùn)營(yíng)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)。為什么使用?logging?
當(dāng)你運(yùn)行一個(gè)?Python?腳本時(shí),你可能想要知道腳本的哪個(gè)部分在執(zhí)行,并且檢視變量的當(dāng)前值。
通常,可以只使用print()打印出你想要的信息。在小程序中,可能靠這個(gè)就足夠了。
但問(wèn)題是,當(dāng)你處理有很多個(gè)模塊的大項(xiàng)目時(shí),就需要一個(gè)更加靈活的方法。
為什么?
因?yàn)榇a需要經(jīng)歷開(kāi)發(fā)、調(diào)試、審查、測(cè)試或者上線等不同階段。在開(kāi)發(fā)時(shí)你想要打印的信息類型可能和上線后你想看到的信息類型完全不同。
也就是說(shuō),在“測(cè)試”時(shí),你可能只想看警告和錯(cuò)誤信息,然而在“調(diào)試”時(shí),你可能還想看到跟調(diào)試相關(guān)的信息。
如果你還想打印出使用的模塊以及代碼運(yùn)行的時(shí)間,那么你的代碼很容易變得混亂。
使用logging模塊,這些問(wèn)題就能很容易地解決。
logging模塊可以:
控制信息層級(jí),僅記錄需要的信息。
控制顯示或者保存日志的時(shí)機(jī)。
使用內(nèi)置信息模板控制日志格式。
知曉信息來(lái)自于哪個(gè)模塊。
基本 logging 例子
logging模塊是 Python 的標(biāo)準(zhǔn)庫(kù),要使用 logging,只需要使用logging.basicConfig()進(jìn)行基本設(shè)置。事實(shí)上,這也是可選的。
然后就可以調(diào)用logging.{level}(message)在控制臺(tái)中顯示信息。
打印出的日志信息遵循默認(rèn)格式:{LEVEL}:{LOGGER}:{MESSAGE}。
上面的例子中,LEVEL就是INFO,因?yàn)檎{(diào)用的是logging.info()。
LOGGER為root,因?yàn)檫@是默認(rèn)?logger。
logger(日志記錄器)類似于一個(gè)實(shí)體,你可以創(chuàng)建并配置它來(lái)記錄不同類型和格式的消息。
你可以配置一個(gè)輸出到控制臺(tái)的?logger?和另一個(gè)將日志發(fā)送到文件的?logger,它們具有不同的日志記錄級(jí)別,并且特定于給定模塊。
最后,輸出的信息就是我傳遞給logging.info()的字符串。
那么如果不設(shè)置logging.basicConfig(level=logging.INFO)會(huì)怎么樣?
答案是日志信息不會(huì)被打印出來(lái)。
為什么?要知道這個(gè)需要先了解?logging?的級(jí)別。
logging 的 5 個(gè)級(jí)別
logging有?5?個(gè)不同層次的日志級(jí)別,可以將給定的?logger?配置為這些級(jí)別:
DEBUG:詳細(xì)信息,用于診斷問(wèn)題。Value=10。
INFO:確認(rèn)代碼運(yùn)行正常。Value=20。
WARNING:意想不到的事情發(fā)生了,或預(yù)示著某個(gè)問(wèn)題。但軟件仍按預(yù)期運(yùn)行。Value=30。
ERROR:出現(xiàn)更嚴(yán)重的問(wèn)題,軟件無(wú)法執(zhí)行某些功能。Value=40。
CRITICAL:嚴(yán)重錯(cuò)誤,程序本身可能無(wú)法繼續(xù)運(yùn)行。Value=50。
現(xiàn)在,讓我們回答之前提出的問(wèn)題。默認(rèn)?logger?是root,其默認(rèn)的 basicConfig 級(jí)別是WARNING。也就是說(shuō),只有來(lái)自logging.warning或者更高級(jí)別的信息才會(huì)被記錄下來(lái)。
因此,logging.info()中的信息不會(huì)被打印出來(lái)。這也是為什么?basicConfig?被設(shè)為INFO。
如果級(jí)別使用logging.ERROR代替,只有來(lái)自logging.error和logging.critical的信息會(huì)被記錄。
將日志記入文件
要從 root logger 將日志消息發(fā)送到文件,需要在logging.basicConfig()中設(shè)置?file?參數(shù):
現(xiàn)在,所有后續(xù)日志消息都將直接記錄到當(dāng)前工作目錄中的“sample.log“文件。如果要將其記錄到另一個(gè)目錄中的文件,請(qǐng)給出完整的文件路徑。
如何更改 logging 格式
logging?模塊提供了向日志消息添加各種詳細(xì)信息的速記表。
讓我們更改日志信息格式以顯示TIME、LEVEL和MESSAGE。
不要對(duì)所有模塊使用 root logger
讓我們看下面的代碼:
如果項(xiàng)目中有一個(gè)或多個(gè)模塊。這些模塊使用基本根模塊。然后,當(dāng)導(dǎo)入模塊myprojectmodule.py時(shí),將運(yùn)行該模塊的所有代碼并配置?logger。
一旦配置好,main文件中的?root?logger?將不能再更改?root?logger?設(shè)置。因?yàn)?,一旦設(shè)置好logging.basicConfig(),就不能再更改它。
如果想在不同文件中使用不同?logger,就需要?jiǎng)?chuàng)建一個(gè)新的?logger。
如何創(chuàng)建一個(gè)新的?logger?
可以使用logger.getLogger(name)方法創(chuàng)建一個(gè)新的?logger。如果存在同名的?logger,則將使用該?logger。
可以給 logger 取任何名字,但是通常使用__name__變量:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:PythonLogging模塊完全解讀-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://aaarwkj.com/article30/iscpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站排名、網(wǎng)站收錄、用戶體驗(yàn)、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容