没有调试日志代码保护的apache.commons.logging.log性能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有调试日志代码保护的apache.commons.logging.log性能相关的知识,希望对你有一定的参考价值。
apache.coomons.logging.Log.Log2JLogger提供代码保护,如log.IsDebugEnabled()
。但是,可以继续调用log.debug(message)
,如果未配置调试级别,我们不会看到这些消息。
从性能角度来看,特别是考虑到我们希望将这些调试消息留给生产调试,在尝试登录之前调用这些代码保护是否最佳?
例如,这会被视为最佳做法吗?
if log.isDebugEnabled()
log.debug("trouble brewing...");
或者打电话
log.debug("I'll slow you down...");
已经为我们做了这个?
答案
如果为日志记录方法创建参数的成本很高,则应首先调用guard方法。在您给出的示例中,没有意义,因为静态String没有性能成本,并且正如您所猜测的那样,日志框架在决定是否记录之前仍然进行检查。
但请考虑以下因素;
logger.debug(myObject.someMethod());
在这种情况下,将在记录器从其接收返回值之前调用myObject.someMethod()
。如果该方法执行冗长的操作,那么无论是否为调试启用记录器,您都将遭受性能损失。在这种情况下,您可能希望在拨打电话之前使用isDebugEnabled()
。
以上是关于没有调试日志代码保护的apache.commons.logging.log性能的主要内容,如果未能解决你的问题,请参考以下文章
Apache Commons Logging 是如何决定使用哪个日志实现类的
如何在没有 IDE 的情况下使用 Apache Commons Lang 代码? (org.apache.commons.lang3)