将值插入日志消息的正确方法

时间:2013-02-25 12:06:44

标签: python logging

是否有一些将值插入日志消息的最佳做法?我的google-fu在这里没有效果,但是我得到像this这样的例子:

#Change all logging from this

logger.warning("This is a %s" % var)

#to

logger.warning("This is a %s", var)
像所有人必须遵循的最佳做法一样。有原因吗? var的任何值(就像一个类的对象)会在这里失败吗?

2 个答案:

答案 0 :(得分:2)

使用后者。记录模块将仅在处理消息时插入值

这意味着您可以节省调试消息的CPU周期,例如,如果日志级别将其排除在外。

logging HOWTO, "Optimization" chapter

中记录了这一点
  

消息参数的格式化将被推迟,直到无法避免。

您可能希望遵循该章中给出的其他建议,以避免仅针对日志记录进行昂贵的计算。

在内部,logging模块使用第一个表单,因此任何无法转换为字符串的值都将失败。

答案 1 :(得分:1)

我认为第二种形式更好,因为记录器有机会在替换之前检查warning级别是否已启用。