使用log4net进行不同级别的日志记录

时间:2014-10-31 14:11:01

标签: log4net appender log-level

我必须记录一些方法。在一种方法中,我必须记录一切。在所有其他方法中,我只记录异常...... 我做了这个配置:

<log4net>
  <appender name="OneMethodFileAppender" type="log4net.Appender.RollingFileAppender">
    ...

    <filter type="log4net.Filter.PropertyFilter">
      <key value="realMethod" />
      <stringToMatch value="xxx" />
      <acceptOnMatch value="true" />
    </filter>
  </appender>

  <appender name="WebsiteFileAppender" type="log4net.Appender.RollingFileAppender">
    ...

    <filter type="log4net.Filter.PropertyFilter">
      <key value="realMethod" />
      <stringToMatch value="xxx" />
      <acceptOnMatch value="false" />
    </filter>
  </appender>

  <root>
    <appender-ref ref="WebsiteFileAppender">
      <threshold value="ERROR" />
    </appender-ref>
    <appender-ref ref="OneMethodFileAppender">
      <threshold value="INFO" />
    </appender-ref>
  </root>
</log4net>

所以,当我匹配属性realMethod时,我应该使用登录INFO级别的appender OneMethodFileAppender;在所有其他情况下,我应该使用登录ERROR级别的appender WebsiteFileAppender

我有不同的输出。 1.当我匹配方法xxx时,一切正常。我的意思是在正确的日志中记录INFO级别的日志。 2.但是当我与方法xxx不匹配时,我会在INFO级别登录这两个文件。

1 个答案:

答案 0 :(得分:1)

我建议使用logger元素配置日志记录:

<log4net>
  <appender name="OneMethodFileAppender" type="log4net.Appender.RollingFileAppender">
    ...
  </appender>

  <appender name="WebsiteFileAppender" type="log4net.Appender.RollingFileAppender">
    ...
  </appender>

  <root>
    <appender-ref ref="WebsiteFileAppender">
      <threshold value="ERROR" />
    </appender-ref>
  </root>
  <logger name="LoggerName1">
    <level value="INFO" />
    <appender-ref ref="WebsiteFileAppender" />
   </logger>
   <logger name="LoggerName2">
    <level value="INFO" />
    <appender-ref ref="OneMethodFileAppender" />
   </logger>
</log4net>

两种方法都应该有自己的记录器:

logger = LogManager.GetLogger("logger1");