Search code examples
c#log4netapp-configmbunitgallio

Set log level for Gallio execution log


How do I configure log4net or my Gallio test runners (Icarus and Echo) to use a different logging level for the Gallio Execution Log and my own file appender. I want my log file to have a DEBUG log level and Gallio to have an ERROR log level.

I thought this would work but Gallio is reading both appenders:

  <log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
      </layout>
    </appender>
    <appender name="File" type="log4net.Appender.FileAppender">
      <file value="test.log" />
      <appendToFile value="false" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
      </layout>
    </appender>

    <logger name="TestNamespace">
      <level value="DEBUG" />
      <appender-ref ref="File" />
    </logger>
    <root>
      <level value="ERROR" />
      <appender-ref ref="Console" />
    </root>
  </log4net>

Solution

  • Gallio is redirecting console output to its Execution Log. So I needed to set the threshold of the ConsoleAppender to the level I want for the Gallio Execution Log.

      <log4net>
        <appender name="Console" type="log4net.Appender.ConsoleAppender">
          <threshold value="ERROR"/>
          <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line number -->
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
          </layout>
        </appender>
        <appender name="File" type="log4net.Appender.FileAppender">
          <threshold value="DEBUG"/>
          <file value="test.log" />
          <appendToFile value="false" />
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
          </layout>
        </appender>
    
        <root>
          <appender-ref ref="Console" />
          <appender-ref ref="File" />
        </root>
      </log4net>