这涉及到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