如何进行新型的延迟格式化python日志记录



这涉及到pylint和python日志记录。以下代码不起作用:

logging.basicConfig(level=logging.DEBUG, format='{message}', style='{')
log.debug('url {}', url)

它提出:

File "/usr/lib/python3.9/logging/__init__.py", line 363, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting

如何使用{}样式而不是%s进行日志记录?

我在测试模块时使用了这个basicConfig,但我的包中也可以有一个更高级的格式化程序。我开始探索这一点的原因是,当我使用f-string时,pylint一直在抱怨,但当我使用(%s(的旧格式时也是如此。

logging惰性格式只由"%s"占位符组成,然后在字符串后面用逗号分隔,用值来替换这些占位符。

在这种情况下:

logging.basicConfig(level=logging.DEBUG, format='%(message)s')
log.debug("url %s", url)

您可以在pylintrc中使用logging-format-style=new

自pylint 2.2:

日志记录格式样式是日志检查程序在调用记录器时使用str.format((样式格式字符串的一个新选项。

它接受两个选项:--logging format style=old用于使用%样式格式化,这是假定的默认值;--logging form style=new用于使用{}样式格式化。

还有一个fstring样式,看看这个非常好的答案:https://stackoverflow.com/a/59027338/2519059

最新更新