中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python Logging 模塊完全解讀

發布時間:2020-09-27 03:15:49 來源:網絡 閱讀:507 作者:Python熱愛者 欄目:編程語言

Python?中的?logging?模塊可以讓你跟蹤代碼運行時的事件,當程序崩潰時可以查看日志并且發現是什么引發了錯誤。Log?信息有內置的層級——調試(debugging)、信息(informational)、警告(warnings)、錯誤(error)和嚴重錯誤(critical)。你也可以在?logging?中包含?traceback?信息。不管是小項目還是大項目,都推薦在?Python?程序中使用?logging。本文將簡單清晰地介紹如何使用?logging?模塊。

為什么使用?logging?

當你運行一個?Python?腳本時,你可能想要知道腳本的哪個部分在執行,并且檢視變量的當前值。

通常,可以只使用print()打印出你想要的信息。在小程序中,可能靠這個就足夠了。

但問題是,當你處理有很多個模塊的大項目時,就需要一個更加靈活的方法。

為什么?

因為代碼需要經歷開發、調試、審查、測試或者上線等不同階段。在開發時你想要打印的信息類型可能和上線后你想看到的信息類型完全不同。

也就是說,在“測試”時,你可能只想看警告和錯誤信息,然而在“調試”時,你可能還想看到跟調試相關的信息。

如果你還想打印出使用的模塊以及代碼運行的時間,那么你的代碼很容易變得混亂。

使用logging模塊,這些問題就能很容易地解決。

logging模塊可以:

控制信息層級,僅記錄需要的信息。

控制顯示或者保存日志的時機。

使用內置信息模板控制日志格式。

知曉信息來自于哪個模塊。

基本 logging 例子

logging模塊是 Python 的標準庫,要使用 logging,只需要使用logging.basicConfig()進行基本設置。事實上,這也是可選的。

然后就可以調用logging.{level}(message)在控制臺中顯示信息。


Python Logging 模塊完全解讀

打印出的日志信息遵循默認格式:{LEVEL}:{LOGGER}:{MESSAGE}。

上面的例子中,LEVEL就是INFO,因為調用的是logging.info()。

LOGGER為root,因為這是默認?logger。

logger(日志記錄器)類似于一個實體,你可以創建并配置它來記錄不同類型和格式的消息。

你可以配置一個輸出到控制臺的?logger?和另一個將日志發送到文件的?logger,它們具有不同的日志記錄級別,并且特定于給定模塊。

最后,輸出的信息就是我傳遞給logging.info()的字符串。

那么如果不設置logging.basicConfig(level=logging.INFO)會怎么樣?

答案是日志信息不會被打印出來

為什么?要知道這個需要先了解?logging?的級別。

logging 的 5 個級別

logging有?5?個不同層次的日志級別,可以將給定的?logger?配置為這些級別:

DEBUG:詳細信息,用于診斷問題。Value=10。

INFO:確認代碼運行正常。Value=20。

WARNING:意想不到的事情發生了,或預示著某個問題。但軟件仍按預期運行。Value=30。

ERROR:出現更嚴重的問題,軟件無法執行某些功能。Value=40。

CRITICAL:嚴重錯誤,程序本身可能無法繼續運行。Value=50。

現在,讓我們回答之前提出的問題。默認?logger?是root,其默認的 basicConfig 級別是WARNING。也就是說,只有來自logging.warning或者更高級別的信息才會被記錄下來。

因此,logging.info()中的信息不會被打印出來。這也是為什么?basicConfig?被設為INFO。

如果級別使用logging.ERROR代替,只有來自logging.error和logging.critical的信息會被記錄。


Python Logging 模塊完全解讀

將日志記入文件

要從 root logger 將日志消息發送到文件,需要在logging.basicConfig()中設置?file?參數:


Python Logging 模塊完全解讀

現在,所有后續日志消息都將直接記錄到當前工作目錄中的“sample.log“文件。如果要將其記錄到另一個目錄中的文件,請給出完整的文件路徑。

如何更改 logging 格式

logging?模塊提供了向日志消息添加各種詳細信息的速記表。

Python Logging 模塊完全解讀

讓我們更改日志信息格式以顯示TIME、LEVEL和MESSAGE。


Python Logging 模塊完全解讀

不要對所有模塊使用 root logger

讓我們看下面的代碼:


Python Logging 模塊完全解讀

如果項目中有一個或多個模塊。這些模塊使用基本根模塊。然后,當導入模塊myprojectmodule.py時,將運行該模塊的所有代碼并配置?logger。

一旦配置好,main文件中的?root?logger?將不能再更改?root?logger?設置。因為,一旦設置好logging.basicConfig(),就不能再更改它。

如果想在不同文件中使用不同?logger,就需要創建一個新的?logger。

如何創建一個新的?logger?

可以使用logger.getLogger(name)方法創建一個新的?logger。如果存在同名的?logger,則將使用該?logger。

可以給 logger 取任何名字,但是通常使用__name__變量:


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卓尼县| 南和县| 蕲春县| 临沧市| 南溪县| 汉川市| 南丰县| 荆门市| 巍山| 德昌县| 蓬莱市| 承德市| 连平县| 都昌县| 囊谦县| 金湖县| 东乡族自治县| 长丰县| 阿瓦提县| 宝坻区| 康乐县| 郸城县| 改则县| 塔城市| 灌云县| 阿勒泰市| 宜州市| 宿迁市| 休宁县| 泗水县| 邹平县| 漳州市| 乐东| 普宁市| 确山县| 武安市| 达尔| 梧州市| 肃北| 攀枝花市| 太仓市|