对于以下代码:
logger.debug('message: {}'.format('test'))
pylint
产生以下警告:
日志记录格式插值 (W1202):
在日志函数中使用 % 格式化并将 % 参数作为参数传递 当日志语句具有“logging.(format_string.format(format_args…))”的调用形式时使用。此类调用应改用 % 格式,但通过将参数作为参数传递给日志记录函数保留插值。
我知道我可以关闭此警告,但我想了解它。我假设使用 format()
是在 Python 3 中打印语句的首选方法。为什么这对于记录器语句不正确?
原文由 pfnuesel 发布,翻译遵循 CC BY-SA 4.0 许可协议
logger 语句不是这样,因为它依赖于以前的“%”格式,如字符串,使用提供给 logger 调用的额外参数来提供此字符串的惰性插值。例如,而不是做:
你应该做
因此只有在消息实际发出时才会插入字符串。
使用
.format()
时,您无法利用此功能。根据
logging
文档的 优化 部分: