我正在尝试使用单个multiple custom logger
在python logging
中设置outer function
。
我可以通过reference so thread
import logging
NOTICE = 25
logging.addLevelName(NOTICE, "NOTICE")
def notice(self, message, *args, **kws):
if self.isEnabledFor(NOTICE):
self._log(NOTICE, message, args, **kws)
logging.Logger.notice = notice
我想立即为以下值reference coloredlogs
创建以下自定义记录器列表 spam (5)
verbose (15)
notice (25)
success (35)
所以我尝试了以下方法。我首先创建了一个外部函数
import logging
def _custom_log_level(level_no, level_name):
logging.addLevelName(level_no, level_name)
def proxy_level(self, message, *args, **kwargs):
if self.isEnabledFor(level_no):
self._log(level_no, message, *args, **kwargs)
return proxy_level
然后我尝试通过将logging.Logger.notice
设置为_custom_log_level的返回值
logging.Logger.notice = _custom_log_level(25, 'NOTICE')
logging.Logger.spam = _custom_log_level(5, 'SPAM')
但是它似乎不起作用,然后我尝试通过更改功能对象的名称
verbose = _custom_log_level(15, 'VERBOSE')
verbose.__name__ = 'verbose'
logging.Logger.verbose = verbose
它没有用,有人可以让我知道我的方法出了什么问题,或者这不是解决此问题的正确方法。 预先感谢。