如何在Python中创建新的自定义记录器功能

时间:2016-11-25 04:55:50

标签: python python-2.7 python-3.x logging

我想create new custom logger function. 我们有默认功能,如下所示

    logger.debug('debug message')
    logger.info('info message')
    logger.warn('warn message')
    logger.error('error message')
    logger.critical('critical message')

如何使用自定义代码创建新的自定义记录器功能。 自定义记录器如下例所示 -

logger.success('success message')

1 个答案:

答案 0 :(得分:2)

鉴于当前的日志库并不能真正满足这一需求,我能想到你能够实现所要求的唯一方法就是创建logging.Logger类的子类并定义自己的成功方法。

例如:

import logging

SUCCESS = 5
logging.addLevelName(5, 'SUCCESS')


class Logger(logging.Logger):
    super(logging.Logger)

    def success(self, msg, *args, **kwargs):
        if self.isEnabledFor(SUCCESS):
            self._log(SUCCESS, msg, args, **kwargs)


formatter = logging.Formatter('%(levelname)s - %(name)s - %(message)s')
ch = logging.StreamHandler()
ch.setFormatter(formatter)

log = Logger('mycustomlogger')
log.setLevel(SUCCESS)
log.addHandler(ch)

log.success('Hello World')