我试图创建一个自定义记录器,在那里我想打印所有的控制台级别的消息在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
我必须在控制台方法中将args更新为*args-
def console(msg, *args, **kwargs):
if logging.getLogger().isEnabledFor(CONSOLE):
logging.log(CONSOLE, msg, *args, **kwargs)