是否有一些将值插入日志消息的最佳实践?我的 google-fu 在这里无效,但我得到这样的例子:
#Change all logging from this
logger.warning("This is a %s" % var)
#to
logger.warning("This is a %s", var)
就像每个人都必须遵循的最佳实践一样。有原因吗?(如类的对象)的任何值var
会在这里失败吗?
使用后者。日志模块只会在处理消息时插入值。
这意味着您可以节省调试消息的 CPU 周期,例如,如果日志级别排除它们。
这记录在logging
HOWTO,“优化”一章中:
消息参数的格式化被推迟到无法避免为止。
您可能希望遵循该章中给出的其余建议,以避免仅用于日志记录的昂贵计算。
在内部,logging
模块使用第一种形式,因此任何不能转换为字符串的值都会失败。
我认为第二种形式更好,因为记录器有机会warning
在进行替换之前检查是否启用了级别。