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 に答える