答:都不是。
讓我們慢慢恢復原因吧!
默認情況下,生成的根日誌記錄器的級別是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”時,可以強制重置日誌信息。