【问题标题】:How to create new custom logger function in Python如何在 Python 中创建新的自定义记录器函数
【发布时间】:2017-04-09 10:34:15
【问题描述】:

我想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')

【问题讨论】:

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


    【解决方案1】:

    鉴于当前的日志库并不能真正满足这一点,我认为您能够实现您所要求的唯一方法是创建 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')
    

    【讨论】:

    • super 调用在这里有什么作用?我通常只在方法定义中看到调用。
    • 事后看来它可能什么都不做,因为我们已经从指定的类继承了
    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2018-09-12
    • 2019-04-27
    • 2019-05-18
    • 1970-01-01
    • 2011-01-07
    • 2020-10-06
    相关资源
    最近更新 更多