當前位置:編程學習大全網 - 源碼下載 - 【Python】無效Python】logging.basicConfig理論

【Python】無效Python】logging.basicConfig理論

問:下圖中的文件“1.log”會被誰寫入?

答:都不是。

讓我們慢慢恢復原因吧!

默認情況下,生成的根日誌記錄器的級別是logging。警告,低於此級別的將不會輸出。

等級排序:嚴重>錯誤& gt警告& gtINFO & gt調試

調試:打印所有日誌和詳細信息,這通常只出現在診斷問題中。

Info:打印info、warning、error和critical級別的日誌,並確保壹切按預期運行。

警告:打印帶有警告、錯誤和嚴重級別的日誌,表明發生了意外的事情或在不久的將來會發生壹些問題。

錯誤:打印帶有錯誤和嚴重級別的日誌。更嚴重的是,該軟件無法執行某些功能。

Critical:打印critical級別,嚴重錯誤,表明程序本身可能無法繼續運行。

1.進入main.py,首先“導入日誌”,運行到“logging.info('logger in 2 ')”。該步驟默認自動生成root logger,級別level為logging.WARNING,如果info低於該級別,則不會輸出,basicConfig未設置,不會寫入“1.log”。

2.運行到“log.init_log()”,開始調用函數,運行“logging.basicConfig”配置日誌信息,然後運行“logging.info('logger in 1 ')”。

重點是:根據basicConfig的源代碼可以發現,只有當“handlers”的長度為0時才會配置日誌信息,否則會跳過配置這壹步。那麽在步驟1中,root已經自動配置了日誌信息,而“handlers”的長度不為0,那麽步驟2中的“logging.basicConfig”就沒有實現日誌信息配置的功能。再者,根據原始的日誌信息配置設置,不會生成“1.log”文件,以及日誌記錄下面的消息。警告級別將不被打印。

根據上面的測試說明,我們可以得出壹個結論:要想讓basicConfig設置生效,必須在log之前設置,在root logger之後,就不能通過basicConfig更改配置(如果強制handlers為空,理論上是可以的,但我還沒有測試過)。

不過針對這種情況,python做了改動,在python3.8之後的basicConfig中增加了壹個force參數,當“force=True”時,可以強制重置日誌信息。

  • 上一篇:有什麽病毒源代碼?
  • 下一篇:免費4k壁紙軟件
  • copyright 2024編程學習大全網