Java 8 中日志记录的惰性计算
当您的计算成本高于计算成本时,您在日志记录框架中看到的常见模式是
if (log.isDebugEnabled()) {
String value = expensiveComputation();
log.debug("value: {}", value);
}
由于Java 8添加了lambdas,因此这样做会很好:
log.debug("value: {}", (Supplier<String>) this::expensiveComputation);
这几乎是有效的,因为日志记录框架将在参数上执行操作。问题是 中的实现。toString()
toString()
Supplier
Object
有没有办法提供懒惰地评估的方法?它几乎只是一个具有默认值的调用.Logger
Supplier
toString()
get()