即使日志级别不允许,java util日志也会调用方法
如果我有一个java util日志语句,比如
logger.log(LEVEL.FINE, "data buffer = {0}",
CommonUtils.prepareDataBufferString(dataBuffer));
现在,即使我的日志级别不是很好,昂贵的准备。。方法仍然被调用, 这不是我想要的。最后,我在执行此语句之前检查记录器级别
if(logger.isLoggable(LEVEL.FINE)){
bufferString = CommonUtils.prepareDataBufferString(dataBuffer);
}
logger.log(LEVEL.FINE, "data buffer = {0}", bufferString);
这不必要地增加了代码行数。我可以不必这样做吗。请帮忙
# 1 楼答案
不,我所知道的任何Java日志API都无法避免这种情况。语言中只有两种方法可以实现您的目标:
我知道没有实现(2)的日志API,而且我不确定您是否会发现传入匿名对象会更不冗长
# 2 楼答案
这样的技术可能会有所帮助
仅供参考,调用该方法的不是日志框架,而是Java。Java要求在调用一个方法之前对该方法的所有参数进行求值(这称为急切求值,与惰性求值相反)