私は人々が次のようにlog4netのロギングコードを書く参照理由として興味:なぜlog4netでIsDebugEnabledを呼び出しますか?
if (_logger.IsDebugEnabled)
{
_logger.Debug("Some debug text");
}
私はlog4netのために解体を経て、およびデバッグを呼び出すことかどうかを確認するために同じコードに別の呼び出しを行いました実際にロギングする前に有効になっているため、IsDebugEnabled呼び出しは不要で、実際には重複したコードになります。
人々がこれを行う理由はありますか?古いバージョンでは以前は必要だったが、もはやそれはない古いパターンでしょうか?それとも正当な理由があるのでしょうか?あるいは、人々はそれをする必要がないことを知りませんか?
他のレベル(情報、エラー、ワーニング、ファインストなど)にも同様の動作があります。
あなたの3人に感謝します。皆さんがほぼ同じ時間に鳴ったようですが、ブライアンが最初だと思います。私は本当に高価なメッセージについては考えていませんでした。私が一般的に行っているロギングは非常にシンプルで、通常は文字列です。しかし、実際にコードが実行された場合は、事前に停止することが間違いありません。助けてくれてありがとう。 –
IsDebugとパフォーマンスの問題については、http://goo.gl/kMHNQ – sduplooy
で説明しています。IMHO if文ですべてのログ呼び出しをラップするのは意味がありません。 DBコールや大量のデータ操作など、ログに記録する値の計算が高価な場合にのみ、私はそれを行います。シンプルな文字列連結によるパフォーマンスへの影響はごくわずかです。あなたはすべてのログステートメントに3行のコードを追加します。それは絶対に狂気です –