1

我正在尝试将表达式跟踪到 Log4j。

假设这个表达式的计算是昂贵的,并且不会产生任何副作用,那么 Java 是否足够聪明以防止在 WARN 模式下表达式计算的开销?

4

2 回答 2

3

不,这正是您if(logger.isXXXEnabled())在代码库中散布大量检查的原因。我建议你转向 slf4j 以避免这种评估(只要你正确使用它,即参数化日志记录)。

于 2013-01-22T19:11:33.973 回答
1

我不太确定,你的意思。如果理解正确,您的意思是,答案是:否

log.trace("this log" + something() + " is expensive");

如果您不希望计算此日志语句,则需要包装代码:

if(log.isTraceEnabled()) log.trace("this log" + something() + " is expensive");
于 2013-01-22T19:14:05.577 回答