【问题标题】:I would like to create two log files - one with "DEBUG" another with "INFO" logs only我想创建两个日志文件 - 一个带有“DEBUG”另一个仅带有“INFO”日志
【发布时间】:2012-10-09 06:46:01
【问题描述】:

我这里有这个 log4net 配置:

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="D:\logfolder\logfile.txt" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="20MB" />
      <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>

这很好,但我想创建另一个只有“INFO”输入的日志文件。是否可以登录两个不同的文件,而不更改我的 C# 代码中的任何内容,只更改配置文件?
或者让问题简单化:我必须在我的配置文件中添加什么?

另外,我还有一个问题:如果我选择“INFO”而不是“DEBUG”,我会得到 INFO + ERROR 日志。我可以以某种方式更改它,而不是获取错误日志,只是获取信息?谢谢。

【问题讨论】:

    标签: c# .net logging log4net log4net-configuration


    【解决方案1】:

    您可以使用指定的过滤器配置第二个附加程序,并将其添加到您的根记录器。

    <log4net>
        <root>
          <level value="DEBUG" />
          <appender-ref ref="LogFileAppender" />
          <appender-ref ref="AnotherLogFileAppender" />
        </root>
        <appender name="LogFileAppender" 
                  type="log4net.Appender.RollingFileAppender">
          ...
        </appender>
        <appender name="AnotherLogFileAppender" 
                  type="log4net.Appender.RollingFileAppender">
          <param name="File" value="D:\logfolder\anotherlogfile.txt" />
          <param name="AppendToFile" value="true" />
          <rollingStyle value="Size" />
          <maxSizeRollBackups value="10" />
          <maximumFileSize value="20MB" />
          <staticLogFileName value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" 
                   value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
                    <param name="LevelMin" value="INFO"/>
                    <param name="LevelMax" value="INFO"/>
          </filter>
        </appender>
      </log4net>
    

    还可以考虑使用新的log4net配置,而不是带有param标签的旧配置:

    <log4net>
        <root>
          <level value="DEBUG" />      
          <appender-ref ref="LogFileAppender" />
          <appender-ref ref="AnotherLogFileAppender" />
        </root>
        <appender name="LogFileAppender"
              type="log4net.Appender.RollingFileAppender">
          <file value="D:\logfolder\logfile.txt"/>
          <appendToFile value="true"/>
          <rollingStyle value="Size"/>
          <maxSizeRollBackups value="10"/>
          <maximumFileSize value="20MB"/>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n"/>
          </layout>
        </appender>
        <appender name="AnotherLogFileAppender" 
                  type="log4net.Appender.RollingFileAppender">
          <file value="D:\logfolder\anotherlogfile.txt"/>
          <appendToFile value="true"/>
          <rollingStyle value="Size"/>
          <maxSizeRollBackups value="10"/>
          <maximumFileSize value="20MB"/>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n"/>
          </layout>               
          <filter type="log4net.Filter.LevelMatchFilter">
            <levelToMatch value="INFO"/>
          </filter>
        </appender>
      </log4net>
    

    【讨论】:

      猜你喜欢
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2021-01-01
      • 2021-01-18
      相关资源
      最近更新 更多