Search code examples
c#nhibernatelog4netcastlelog4net-filter

log4net filtering by <logger> not working


I would like to filter out certain log entries. In my config file I've tried adding the following to my appender with no luck:

<logger name="NHibernate">
      <level value="ERROR" />
</logger>
<logger name="NHibernate.SQL">
      <level value="ERROR" />
</logger>
<logger name="Castle">
      <level value="ERROR" />
</logger>
<filter type="log4net.Filter.LoggerMatchFilter">
      <loggerToMatch value="/*repeat for all the above*/" />
      <acceptOnMatch value="false" />
</filter>

Here's the whole file, where the two <logger/> sections are is where I tried putting the rest of my filter attempts as well. Only concerned about the RollingFileAppender right now.

<log4net>
  <appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <!-- Pattern to output the caller's file name and line number -->
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="C:\log\auto.log" />
    <appendToFile value="true" />
    <maximumFileSize value="1000KB" />
    <maxSizeRollBackups value="10" />
    <logger name="NHibernate" additivity="false">
      <level value="OFF" />
    </logger>
    <logger name="NHibernate.SQL" additivity="false">
      <level value="OFF" />
    </logger>
    <layout type="log4net.Layout.PatternLayout">
      <footer value ="&#13;&#10;"/>
      <conversionPattern value="%date %level - %message%newline%exception" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingFile" />
  </root>
</log4net>

Solution

  • You need to move the logger configuration outside the appenders: loggers reference which appenders to use, but are not part of the appender configuration. Also you should remove the additivity=false as that's redundant.