2

是否有一些将值插入日志消息的最佳实践?我的 google-fu 在这里无效,但我得到这样例子:

#Change all logging from this

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

#to

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

就像每个人都必须遵循的最佳实践一样。有原因吗?(如类的对象)的任何值var会在这里失败吗?

4

2 回答 2

2

使用后者。日志模块只会在处理消息时插入值。

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

这记录在loggingHOWTO,“优化”一章中

消息参数的格式化被推迟到无法避免为止。

您可能希望遵循该章中给出的其余建议,以避免仅用于日志记录的昂贵计算。

在内部,logging模块使用第一种形式,因此任何不能转换为字符串的值都会失败。

于 2013-02-25T12:08:20.373 回答
1

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

于 2013-02-25T12:08:13.703 回答