小编Zbi*_*iew的帖子

如何为自己的日志级别编写自己的日志记录方法

嗨,
我想用我自己的方法扩展我的记录器(由logging.getLogger("rrcheck")获取),如: def warnpfx(...):

怎么做得最好?

我最初希望有一个根记录器将所有内容写入文件,并另外命名为logger("rrcheck")写入stdout,但后者还应该有其他一些方法和级别.我需要它用"!PFXWRN"前缀(但只有那些去stdout)前缀一些消息并保留其他消息不变.我还想为root和named logger 单独设置日志记录级别.

这是我的代码:

class CheloExtendedLogger(logging.Logger):
    """
    Custom logger class with additional levels and methods
    """
    WARNPFX = logging.WARNING+1

    def __init__(self, name):
        logging.Logger.__init__(self, name, logging.DEBUG)                

        logging.addLevelName(self.WARNPFX, 'WARNING')

        console = logging.StreamHandler()
        console.setLevel(logging.DEBUG)
        # create formatter and add it to the handlers
        formatter = logging.Formatter("%(asctime)s [%(funcName)s: %(filename)s,%(lineno)d] %(message)s")
        console.setFormatter(formatter)

        # add the handlers to logger
        self.addHandler(console)

        return

    def warnpfx(self, msg, *args, **kw):
        self.log(self.WARNPFX, "! PFXWRN %s" % msg, *args, **kw)


logging.setLoggerClass(CheloExtendedLogger)    
rrclogger = logging.getLogger("rrcheck") …
Run Code Online (Sandbox Code Playgroud)

python logging

6
推荐指数
1
解决办法
5437
查看次数

标签 统计

logging ×1

python ×1