【问题标题】:Turn off Debug Logging during Release in Log4net在 Log4net 发布期间关闭调试日志记录
【发布时间】:2009-04-29 01:06:15
【问题描述】:

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

我错过了什么吗?

【问题讨论】:

标签: log4net


【解决方案1】:

您的 App.Config 文件中没有任何内容可以告诉 log4net 在发布或调试模式下做不同的事情。如果您希望两个构建之间的日志记录不同,则必须更改两个构建之间的配置文件。

您最好的选择可能是为发布创建一个 App.Config,为调试创建一个,然后按照 StackOverflow 问题中的建议:

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

<level value="DEBUG" />

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

<level value="INFO" />

【讨论】:

    【解决方案2】:

    也许可以试试这样的东西?设置为您想要接收的任何最低级别。

    <level value="WARN" />
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        • 2018-01-17
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 2017-11-11
        相关资源
        最近更新 更多