在Log4net中释放期间关闭调试日志记录

时间:2009-04-29 01:06:16

标签: log4net

当我在发布模式下编译我的应用程序时,我发现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>

我错过了什么吗?

3 个答案:

答案 0 :(得分:14)

App.Config文件中没有任何内容告诉log4net在发布或调试模式下执行不同的操作。如果您希望两个版本之间的日志记录不同,则必须在两个版本之间更改配置文件。

你最好的选择可能是创建一个App.Config for Release,一个用于Debug,然后按照StackOverflow问题中的建议:

注意:发布和调试App.Config之间的差异将是调试版本中的以下行

<level value="DEBUG" />

与发布版本中的以下行相比(当然,如果需要,您可以选择ERROR或FATAL):

<level value="INFO" />

答案 1 :(得分:4)

也许尝试这样的事情呢?设置为您希望接收的最低级别。

<level value="WARN" />

答案 2 :(得分:1)

如果您的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