式を Log4j までトレースしようとしています。
この式の評価にコストがかかり、副作用がないと仮定すると、Java は WARN モードでの式計算のオーバーヘッドを回避するのに十分スマートでしょうか?
式を Log4j までトレースしようとしています。
この式の評価にコストがかかり、副作用がないと仮定すると、Java は WARN モードでの式計算のオーバーヘッドを回避するのに十分スマートでしょうか?
いいえ。コード ベース全体に多くのif(logger.isXXXEnabled())
チェックが散らばっている理由はまさにこれです。この評価を回避する slf4j に移行することをお勧めします (適切に使用する場合、つまりパラメーター化されたロギング)。
私はあなたが何を意味するのかよくわかりません。あなたの言いたいことを正しく理解すれば、答えは「いいえ」です。
log.trace("this log" + something() + " is expensive");
このログ ステートメントを計算したくない場合は、コードをラップする必要があります。
if(log.isTraceEnabled()) log.trace("this log" + something() + " is expensive");