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