На чем основано поведение метода LogWriter.ShouldLog (LogEntry)? - PullRequest
6 голосов
/ 05 апреля 2011

На чем основано поведение метода LogWriter.ShouldLog(..)?Или каково реальное намерение его использования?Его страница документации довольно скудна и не дает особого понимания.Цитируя это:

Запрашивает, регистрируется ли в журнале LogEntry [sic].

( В комплекте с одинаковой опечаткой во всех версиях Enterprise Library, яИнтересно, обратили ли авторы на это внимание? )

Метод кажется мне весьма неземным.Я должен всегда проверять это перед регистрацией?

В настоящее время я проверяю только LogWriter.IsLoggingEnabled(..), который основан на явной настройке в конфигурации.Это представляет конкретный сценарий: регистрация либо включена, либо выключена.

1 Ответ

6 голосов
/ 06 апреля 2011

Поведение

LogWriter.ShouldLog( LogEntry logEntry ) запрашивает все настроенные фильтры для данных в LogEntry, чтобы определить, должен ли быть зарегистрирован конкретный LogEntry. Если все фильтры возвращают значение true (для ShouldLog), то LogEntry будет зарегистрирован, если был вызван метод Write. Стандартными фильтрами являются Category, Priority и LoggingEnabled, хотя вы можете создавать свои собственные пользовательские фильтры.

В отличие от проверки IsLoggingEnabled, проверяется только один фильтр, тогда как вызов ShouldLog проверяет все фильтры (включая IsLoggingEnabled).

Намерение

Цель вызова - позволить разработчику избежать дорогостоящих операций, если LogEntry не будет зарегистрировано. То, что «дорого», будет зависеть от применения и требований. например чрезмерное манипулирование строками в тесном цикле или, возможно, вызов вне процесса для извлечения некоторой информации (хотя это может быть хорошим кандидатом для кэширования!).

Должен ли я всегда проверять это перед регистрацией?

В общем, я бы не стал звонить по номеру ShouldLog, если только нет веских причин поступить иначе.

Я могу придумать несколько причин:

  1. Загромождает код
  2. Если вы попытаетесь снять загромождение кода с помощью вспомогательного метода, то LogEntry обычно будет заполнен полностью, так что вы, вероятно, в любом случае не избежали бы каких-либо операций (хотя вы могли бы передать делегат и не вызывать его, но я ' я не уверен, что все становится проще)
  3. Внутренне метод Write уже вызывает ShouldLog, поэтому, если вы регистрируетесь, то ShouldLog будет вызываться дважды для каждого зарегистрированного сообщения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...