PyLint消息:logging格式插值
对于下面的代码:
logger.debug('message: {}'.format('test'))
pylint
产生以下警告:
logging格式插值(W1202):
在logging函数中使用%格式,并将参数作为parameter passing。当logging语句具有调用格式“logging。(format_string.format(format_args …))”时使用。 这样的调用应该使用%格式来代替,但是通过传递参数作为参数来对logging函数进行插值。
我知道我可以关掉这个警告,但是我想明白这一点。 我认为使用format()
是在python3
打印语句的首选方法。 为什么logging器陈述不正确?
对于logger语句来说这是不正确的,因为它依赖于以前的“%”格式,比如string,通过给logging器调用提供额外的参数来提供这个string的延迟插值。 例如,而不是做:
logger.error('oops caused by %s' % exc)
你应该做
logger.error('oops caused by %s', exc)
所以只有在消息被实际发射的时候才会插入string。
使用.format()
时,您无法使用此function。
根据logging
文档的优化部分:
消息参数的格式化被推迟到无法避免为止。 但是,计算传递给日志logging方法的参数也可能很昂贵,如果logging器只会抛弃事件,则可能要避免这样做。