如果我設置日誌模塊的命令行參數是這樣來調試:確定Python日誌記錄器是否設置爲DEBUG級別?
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
我怎麼能以後告訴如果記錄器設置爲DEBUG?如果True標誌被傳遞給它,並且如果沒有給出標誌,它會默認 在根記錄器被設置爲DEBUG時打印定時信息,所以我正在編寫一個裝飾器 。
如果我設置日誌模塊的命令行參數是這樣來調試:確定Python日誌記錄器是否設置爲DEBUG級別?
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
我怎麼能以後告訴如果記錄器設置爲DEBUG?如果True標誌被傳遞給它,並且如果沒有給出標誌,它會默認 在根記錄器被設置爲DEBUG時打印定時信息,所以我正在編寫一個裝飾器 。
logging.getLogger().getEffectiveLevel()
logging.getLogger()
無參數獲取根級記錄器。
http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
非常好,謝謝!我正在做類似的事情(除了向getLogger傳遞顯式的「root」),但是我在裝飾器的__init__函數中,在記錄器設置爲調試之前執行了此操作:\ – 2009-12-31 23:40:08
如果您想要level的名稱,而不是數字,你可以使用它將數字轉換爲一個字符串(如'INFO'):logging.getLevelName() – guettli 2017-07-13 10:09:20
其實,有一個更好的:使用代碼logging.getLogger().isEnabledFor(logging.DEBUG)
。我在嘗試瞭解如何處理getEffectiveLevel()
的結果時發現它。 :-)
(下面是日誌模塊本身使用的代碼的圖像。)
這應該是公認的答案,因爲它具有相同的事情,運行時複雜度較低。 – AndyJost 2017-09-21 16:57:25
你最終還是會希望使用特定的,而不是這個耦合到記錄一些東西,比如選擇[「time_functions」](根據其他選項,您可能會默認爲True/False)。 – 2010-01-01 00:19:25