Поведение
LogWriter.ShouldLog( LogEntry logEntry )
запрашивает все настроенные фильтры для данных в LogEntry, чтобы определить, должен ли быть зарегистрирован конкретный LogEntry. Если все фильтры возвращают значение true (для ShouldLog), то LogEntry будет зарегистрирован, если был вызван метод Write
. Стандартными фильтрами являются Category, Priority и LoggingEnabled, хотя вы можете создавать свои собственные пользовательские фильтры.
В отличие от проверки IsLoggingEnabled
, проверяется только один фильтр, тогда как вызов ShouldLog
проверяет все фильтры (включая IsLoggingEnabled
).
Намерение
Цель вызова - позволить разработчику избежать дорогостоящих операций, если LogEntry
не будет зарегистрировано. То, что «дорого», будет зависеть от применения и требований. например чрезмерное манипулирование строками в тесном цикле или, возможно, вызов вне процесса для извлечения некоторой информации (хотя это может быть хорошим кандидатом для кэширования!).
Должен ли я всегда проверять это перед регистрацией?
В общем, я бы не стал звонить по номеру ShouldLog
, если только нет веских причин поступить иначе.
Я могу придумать несколько причин:
- Загромождает код
- Если вы попытаетесь снять загромождение кода с помощью вспомогательного метода, то LogEntry обычно будет заполнен полностью, так что вы, вероятно, в любом случае не избежали бы каких-либо операций (хотя вы могли бы передать делегат и не вызывать его, но я ' я не уверен, что все становится проще)
- Внутренне метод Write уже вызывает
ShouldLog
, поэтому, если вы регистрируетесь, то ShouldLog
будет вызываться дважды для каждого зарегистрированного сообщения