行動
LogWriter.ShouldLog( LogEntry logEntry )
特定の LogEntry をログに記録する必要があるかどうかを判断するために、LogEntry 内のデータに対してすべての構成済みフィルターを照会します。すべてのフィルターが true (ShouldLog の場合) を返す場合、Write
メソッドが呼び出された場合に LogEntry がログに記録されます。独自のカスタム フィルターを作成することもできますが、すぐに使用できるフィルターは、Category、Priority、および LoggingEnabled です。
対照的に、IsLoggingEnabled
チェックは 1 つのフィルターのみをチェックしますが、ShouldLog
呼び出しはすべてのフィルター (を含むIsLoggingEnabled
) をチェックします。
目的
呼び出しの意図は、開発者がログに記録されない場合にコストのかかる操作を回避できるようにすることLogEntry
です。何が「高価」かは、アプリケーションと要件によって異なります。たとえば、タイトなループでの過剰な文字列操作や、何らかの情報を取得するためのプロセス外呼び出し (ただし、キャッシュの対象となる可能性があります)。
ログに記録する前に常に確認する必要がありますか?
ShouldLog
一般的に、やむを得ない理由がない限り、電話は避けます。
いくつかの理由が考えられます:
- コードが乱雑になる
- ヘルパー メソッドを使用してコードを整理しようとすると、LogEntry は通常完全に読み込まれるため、とにかく操作を回避できなかったでしょう (ただし、デリゲートを渡して呼び出さなくてもかまいませんが、よくわかりません)。それは物事をより単純にすることです)
- 内部的には、Write メソッドが既に呼び出されている
ShouldLog
ため、ログを記録している場合は、ログにShouldLog
記録されたメッセージごとに 2 回呼び出されます。