Как включить / отключить ведение журнала в ASP.NET - PullRequest
1 голос
/ 15 сентября 2010

Я пытаюсь создать настройку на своем веб-сайте ASP.NET, которая позволяет включать / отключать ведение журнала во время работы приложения в любой момент.Я полагаю, что некоторые из вас уже сделали такую ​​вещь.

Вот суть того, что я пытаюсь сделать:

if(ShouldBeLogging)
logger.Info("helloooooo there");

Итак, как бы вы установили логическое значениебыть в состоянии включить / выключить во время работы веб-сайта без каких-либо серьезных проблем с производительностью (видя, как часто к нему будут обращаться)?разве это не пнул мои сеансы, если я хотел включить его?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 15 сентября 2010

Встроенная диагностика / трассировка может наилучшим образом соответствовать вашим потребностям, т. Е. См. http://www.beansoftware.com/ASP.NET-Tutorials/Tracing-ASP.NET.aspx

образец для web.config:

<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
        <compilation debug="false" />
        <authentication mode="Windows" />
      <trace enabled ="true" pageOutput ="false" requestLimit ="20" traceMode ="SortByTime " /> 


</system.web>

0 голосов
/ 23 сентября 2010

Я решил пойти с log4net, который поддерживает эту точную функциональность.Вы можете поместить в свой файл assemblyinfo.cs строку, например:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "config\\log4net.config", Watch = true)]

, которая сообщит ему, чтобы он следил за изменениями в файле конфигурации.затем вы можете установить узел уровня в config xml в любое время во время выполнения программы, и регистрация будет включена / выключена, если вы используете следующие проверки в вашем коде:

if(log.IsDebugEnabled)
    log.Debug("write a debug message to the logger");

см. http://logging.apache.org/log4net/release/manual/internals.html для получения дополнительной информации.

0 голосов
/ 15 сентября 2010

Да, изменение в файле web.config приведет к тому, что приложение само перезапустится и сеанс будет потерян в зависимости от вашего хранилища сеансов.

Производительность при логической проверке минимальна, но это кошмар обслуживания.

Почему бы вам просто не использовать Блок приложения для ведения журнала библиотеки предприятия , который уже настраивается извне? Ссылка на то, что вы пытаетесь сделать, будет здесь Проверка состояния фильтра перед регистрацией

Если вы решите, что действительно хотите переключить регистрацию через if, то простым решением psuedo является добавление значения в web.config appSettings

 <appSettings>
  <add key="DiagnosticLogging" value="true" />
</appSettings>

А потом на вашей глобальной странице public static readonly Boolean LoggingEnabled {get;}

  Application_Start(..){
         string log = ConfigurationSettings.AppSettings["DiagnosticLogging"];
         LoggingEnabled  = false;
         if(!string.IsNullOrEmpty(log)){
             if(!boolean.TryParse(out LoggingEnabled )){
                   //bad application setting.. handle
              }   
         }      
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...