我似乎有一個麻煩的地方在Python中設置記錄器。我試圖讀取控制程序的值(海洋模擬,有很多小的調整因素,這些因素在某個文件中最好保存在一個文件中,因爲我們傾向於在控制中使用它們)文件(基於JSON)。其中包括日誌設置的級別。由於這是我期望人們可能拼錯的東西,而且Python對此非常嚴格,所以我試圖在記錄器設置中進行嘗試 - 除非出現錯誤(併發出警告),否則會將其默認恢復爲INFO,如圖所示:設置Python的記錄器的水平嘗試/除了
with open(control['outFileStem'] + "_log.info", 'w'):
pass #Clear an existing logfile
#Then set up the logging
try:
logging.basicConfig(filename = control['outFileStem'] + "_log.info", level = control['logLevel'])
except ValueError:
control['logLevel'] = "INFO"
logging.basicConfig(filename = control['outFileStem'] + "_log.info", level = logging.INFO)
logging.warning('WARNING: Logging Level set to INFO')
logging.info('Control structure created successfully')
但是,當我通過改變控制文件中的級別來試驗它時,它專門將級別設置爲WARNING。無論我使用哪種變體(例如logging.INFO,數字代碼,從控制對象中調用值而不是將其放入自己等等),都會發生這種情況。我無法弄清楚這裏發生了什麼。
如果它是相關的,控制是一個字典,我已經改變了init方法來處理從JSON文件中的閱讀很好,乾淨。
在此先感謝。
我試過使用logLevel作爲數字,字符串(例如「INFO」)和logging.WHATEVER類型。所有3個工作正常在嘗試:,他們都不工作在除了: 您的建議工程(謝謝!),但我仍然不知道我的原始片段沒有...? – AGPeddle
對我來說,logging.basicConfig不會抱怨奇怪的日誌級別。你確定例外被觸發嗎?除非我看到配置json文件,否則我無法自己測試它。 例如,這不會觸發異常: logging.basicConfig(filename =「logfile」,level =「broken」) – mathewguest
它肯定會觸發;我已經放棄了一些print()語句來檢查它。對我來說,如果我試圖通過任何不尋常的東西,那就是ValueError。我使用的Python 3.4,也許這是不同的版本? – AGPeddle