0

Я инкапсулирую блок приложения EntLib 5 для ведения журнала. Я видел в документации, что каждый раз, когда вы хотите регистрироваться, вы должны взглянуть на «IsLoggingEnabled()». Тот факт, что это метод, а не свойство, скажите мне, что это операция, для которой требуется некоторое время, но ... могу ли я кэшировать это значение в локальной переменной и проверить, можно ли на ней зарегистрироваться или нет? ?Может ли IsLoggingEnabled() изменяться во время выполнения?

Cheers.

ответ

1

Вы не можете с помощью кода изменить настройки ведения журнала, как указано на Enterprise Library Document. Но вы также можете прочитать, что:

Примечание:
время выполнения изменений в конфигурацию Logging Application Block автоматически обнаруженной после короткого периода, и стек каротажа обновляется. Однако вы не можете изменить стек регистрации при запуске время через код. Для получения дополнительной информации см. с использованием механизмов настройки, которые вы можете обновить во время выполнения, см. Обновление настроек конфигурации при запуске Время.

То есть, если вы не можете включить/отключить программно запись в журнал, она может измениться во время выполнения, если конфигурация отредактирована вручную.

Итак, вам нужно каждый раз обращаться к операциям IsLoggingEnabled(), и это не рекомендуется кэшировать его значение.

+0

Я вижу. Таким образом, в веб-среде не проблема, потому что каждый раз, когда вы изменяете web.config, iis перезагружает приложение. Но в приложении или сервисе Windows вы можете изменить значения, а затем это создаст проблему. Я прав? – vtortola

+1

Ну, так кажется: http://msdn.microsoft.com/en-us/library/ff664640%28v=PandP.50%29.aspx «В приложениях Windows Forms вы можете перезапустить приложение, чтобы заставить его читать все новые сведения о конфигурации. Приложения Web Forms (ASP.NET) будут обнаруживать и перезагружать информацию о конфигурации, но стандартное поведение ASP.NET заставляет приложение перезапускаться при редактировании файла конфигурации, что приводит к тому, что все состояние потерянный для приложения ». –

+0

Вы не можете изменить стек протоколирования во время выполнения через код, но вы можете изменить конфигурацию во время выполнения с помощью кода, который вызывает изменение стека протоколирования во время выполнения. :) –

Смежные вопросы