对于以下代码:
logger.debug('message: {}'.format('test'))
pylint产生以下警告:
pylint
记录格式插值(W1202): 在日志记录函数中使用 % 格式并将 % 参数作为参数传递 当日志记录语句的调用形式为“ogging.(format_string.format(format_args…))”时使用。此类调用应改用 % 格式,但通过将参数作为参数传递来将插值留给日志记录函数。
记录格式插值(W1202):
在日志记录函数中使用 % 格式并将 % 参数作为参数传递 当日志记录语句的调用形式为“ogging.(format_string.format(format_args…))”时使用。此类调用应改用 % 格式,但通过将参数作为参数传递来将插值留给日志记录函数。
我知道我可以关闭此警告,但我想了解它。我假设 usingformat()是在 Python 3 中打印语句的首选方式。为什么对于 logger 语句不适用?
format()
logger 语句不是这样,因为它依赖于以前的 “%” 格式(如字符串)使用提供给 logger 调用的额外参数来提供此字符串的惰性插值。例如,而不是这样做:
logger.error('oops caused by %s' % exc)
你应该做
logger.error('oops caused by %s', exc)
因此,只有在实际发出消息时才会对字符串进行插值。
使用.format().
.format()
根据文档的优化部分:logging
logging
消息参数的格式化被推迟到无法避免为止。但是,计算传递给日志记录方法的参数也可能很昂贵,如果记录器只是丢弃您的事件,您可能希望避免这样做。