Отключите ведение журнала отладки во время выпуска в Log4net

StackOverflow https://stackoverflow.com/questions/800483

  •  03-07-2019
  •  | 
  •  

Вопрос

Когда я скомпилировал свое приложение в режиме выпуска, я обнаружил, что Log4Net по-прежнему записывает отладочную информацию;есть идеи, как это исправить?

Это мой файл App.Config:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="C:\Documents and Settings\test\Application Data\Log.txt" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} - %m%n" />
      </layout>
    </appender>
  </log4net>

Я что-нибудь пропустил?

Это было полезно?

Решение

В вашем файле App.Config нет ничего, что могло бы указать log4net действовать по-другому в режиме выпуска или отладки.Если вы хотите, чтобы ведение журналов в двух сборках различалось, вам необходимо изменить файл конфигурации между двумя сборками.

Лучше всего, вероятно, создать один App.Config для выпуска, один для отладки, а затем следовать советам в вопросе StackOverflow:

ПРИМЕЧАНИЕ:Разница между вашим выпуском и отладочным App.Config будет заключаться в следующей строке в отладочной версии.

<level value="DEBUG" />

по сравнению со следующей строкой в ​​релизной версии (или, конечно, вы можете выбрать ERROR или FATAL, если хотите):

<level value="INFO" />

Другие советы

Может быть, вместо этого попробовать что-нибудь подобное?Установите любой минимальный уровень, который вы хотите получить.

<level value="WARN" />

Если ваш App.Config выглядит так:

    <root>
      <level value="Info" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingFileAppender" />
    </root>

Вы можете изменить уровень журнала с помощью кода (поместите код в Program.cs):


#if DEBUG
            log4net.Repository.ILoggerRepository RootRep;
            RootRep = LogManager.GetRepository(Assembly.GetCallingAssembly());

            XmlElement section = ConfigurationManager.GetSection("log4net") as XmlElement;

            XPathNavigator navigator = section.CreateNavigator();

            XPathNodeIterator nodes = navigator.Select("root/level");
            foreach (XPathNavigator appender in nodes)
            {
                appender.MoveToAttribute("value", string.Empty);
                appender.SetValue("Debug");
            }

            IXmlRepositoryConfigurator xmlCon = RootRep as IXmlRepositoryConfigurator;
            xmlCon.Configure(section);
#endif

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top