小编典典

PyLint 消息:记录格式插值

all

对于以下代码:

logger.debug('message: {}'.format('test'))

pylint产生以下警告:

记录格式插值(W1202):

在日志记录函数中使用 % 格式并将 % 参数作为参数传递
当日志记录语句的调用形式为“ogging.(format_string.format(format_args…))”时使用。此类调用应改用 %
格式,但通过将参数作为参数传递来将插值留给日志记录函数。

我知道我可以关闭此警告,但我想了解它。我假设 usingformat()是在 Python 3 中打印语句的首选方式。为什么对于 logger
语句不适用?


阅读 225

收藏
2022-05-18

共1个答案

小编典典

logger 语句不是这样,因为它依赖于以前的 “%” 格式(如字符串)使用提供给 logger
调用的额外参数来提供此字符串的惰性插值。例如,而不是这样做:

logger.error('oops caused by %s' % exc)

你应该做

logger.error('oops caused by %s', exc)

因此,只有在实际发出消息时才会对字符串进行插值。

使用.format().


根据文档的优化部分:logging

消息参数的格式化被推迟到无法避免为止。但是,计算传递给日志记录方法的参数也可能很昂贵,如果记录器只是丢弃您的事件,您可能希望避免这样做。

2022-05-18