從Python 3.2開始,logging.Logger.setLevel
接受字符串級別,例如'INFO'而不是相應的整數常量。這非常方便,除非您無法以數字方式比較級別,並且大多數其他日誌記錄方法僅接受整數。如何使用logging
包提供的功能將級別字符串轉換爲數字級別?具體來說,我希望這樣做:如何將python日誌記錄級別名稱轉換爲整數代碼
>>> logging.???('INFO') == logging.INFO
True
從Python 3.2開始,logging.Logger.setLevel
接受字符串級別,例如'INFO'而不是相應的整數常量。這非常方便,除非您無法以數字方式比較級別,並且大多數其他日誌記錄方法僅接受整數。如何使用logging
包提供的功能將級別字符串轉換爲數字級別?具體來說,我希望這樣做:如何將python日誌記錄級別名稱轉換爲整數代碼
>>> logging.???('INFO') == logging.INFO
True
如何使用類似
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging
>>> getattr(logging, 'INFO')
20
>>> getattr(logging, 'DEBUG')
10
>>> getattr(logging, 'ERROR')
40
>>>
.level
返回記錄事件的數值級別。
演示:
>>> logger = logging.getLogger()
>>> logger.setLevel('INFO')
>>> logger.level == logging.INFO
True
這是非常有用的,並回答我的字面問題。但是,我希望能夠在不設置日誌級別的情況下獲取號碼。 –
有一對夫婦的logging
模塊,使該功能在屬性。它們的前綴是下劃線,意味着隱私,所以使用它們不是一個好主意。但是:
在最高級別,有_checkLevel
,這需要的水平是字符串或整數,或者返回相應現有水平或提出了一個ValueError
。
_checkLevel
包裝字典_nameToLevel
,其中包含所有已註冊的等級(並由addLevelName
更新)。
還有一個名爲_levelToName
的成員,它包含反向映射。它可以通過getLevelName
方法公開訪問。
這正是我正在尋找的。查詢而不修改任何記錄器的狀態。 –