来自 Java,建议将 log.debug 包装为
if (log.isDebugEnabled())
log.debug("blah blah blah "+someObject+" more blahs than you can blah at"):
在 python 中是否有类似的原因?还是python以不同的方式处理字符串?
建议的答案忽略了字符串连接的开销和任何繁重的方法调用。
所以这:
log.debug("blah blah blah "+someObject+" more blahs than you can blah at")
将花费字符串联系,即使在 ERROR 日志记录级别。
不同的语言/记录器以不同的方式管理它,检查 isDebugEnabled() 或 isEnabledFor() 是好的最佳实践。
当然,如果这不相关,你不应该预先优化,就像这个世界上的任何事情一样。
无需额外检查。只需配置您的日志记录级别:
>>> import logging
>>> root = logging.getLogger()
>>> root.setLevel(logging.INFO)
>>> root.addHandler(logging.StreamHandler())
>>> logging.error("test")
test
>>> logging.debug("test")
>>>
同样,不需要额外的检查(源代码取自logging/__init__.py
):
class Logger(Filterer):
...
def debug(self, msg, *args, **kwargs):
"""
Log 'msg % args' with severity 'DEBUG'.
To pass exception information, use the keyword argument exc_info with
a true value, e.g.
logger.debug("Houston, we have a %s", "thorny problem", exc_info=1)
"""
if self.isEnabledFor(DEBUG):
self._log(DEBUG, msg, args, **kwargs)
如您所见,日志记录本身会进行检查。
希望有帮助。