提问者:小点点

我正在用python创建一个新的日志级别,但出现错误“未能正确记录以下消息:”


我试图创建一个自定义记录器,在那里我想打印所有的控制台级别的消息在stdout.

所以我创建了一个控制台级别,

CONSOLE=60 def控制台(msg,*args,**kwargs):如果记录。getLogger()。isEnabledFor(控制台):日志记录。日志(控制台、消息、参数、**kwargs)

日志记录。logger.console=控制台

为了得到一个记录器,它只是在stdout上打印控制台级别的日志,我使用下面的代码-

`日志记录。basicConfig(format=“%(asctime)s%(名称)s%(级别名称)s%(消息)s”,级别=日志记录。信息,datefmt=“%Y-%m-%d%H:%m:%S”)

    streamhandler = logging.StreamHandler()

    streamhandler.setLevel(CONSOLE)

    logging.getLogger('').addHandler(streamhandler)

    logger = logging.getLogger("ABC")

    logging.Logger.console = console`

但我的错误是-

22:46:55.280错误未能正确记录以下消息:这是我的消息22:46:55.280DEBUG TypeError:不是所有参数在字符串格式化过程中转换Traceback(最近的调用最后): File"/库/框架/Python.framework/Versions/3.7/lib/python3.7/logging/__init__.py", line369,在getMessage msg=msg%self.args


共1个答案

匿名用户

我必须在控制台方法中将args更新为*args-

def console(msg, *args, **kwargs): 
   if logging.getLogger().isEnabledFor(CONSOLE): 
      logging.log(CONSOLE, msg, *args, **kwargs)