使用单个功能块在python中添加多人定制记录器

时间:2019-07-17 19:28:19

标签: python-3.x logging

我正在尝试使用单个multiple custom loggerpython 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

它没有用,有人可以让我知道我的方法出了什么问题,或者这不是解决此问题的正确方法。 预先感谢。

0 个答案:

没有答案