Python有两个主要的字符串格式选项%
和str.format
。 logging
模块具有惰性功能。
logging.debug('The value is %s', huge_arg)
如果日志行不打印,则不构造字符串。但是,仅当sting使用旧样式%
格式时,此功能才有效。有没有办法使用str.format
这个懒惰的功能?可能有一个命名的arg,如:
logging.debug('The value is {}', fmt_arg=(huge_arg))
答案 0 :(得分:4)
您问题的唯一答案是 - 到目前为止 - 没有人自愿更改logging
代码以支持更新的格式功能。如果您是志愿者,为什么不在the Python-Dev mailing list上询问?我希望它比你意识到的更棘手(例如,可能调用logging
函数已经碰巧传递fmt_arg
关键字参数)。祝你好运; - )
答案 1 :(得分:2)
我有点害怕与TimBot相矛盾,但我有另一个答案: - )
日志记录模块使用%格式,因为它早于Python中{} -formatting的出现(logging
出现在2.3中,str.format
出现在2.6中)。记录尚未转换为{} -formatting,因为:
string.Template
),如this post from 2010中所述。所描述的方法支持日志记录的延迟格式化。