嗨,
我想用我自己的方法扩展我的记录器(由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)