Search code examples
c#.netlog4netlog4net-configuration

How to filter log records in an application?


I have a WinForms application with log4net. The app.config has a log4net configuration section. It contains settings like this:

<appender name="coloredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="FATAL" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %m%n" />
      </layout>
    </appender>

But user wants to change levelMin and levelMax via GUI menu because edit app.config file is not comfortable. How can I change the levelMin and levelMax values in application?


Solution

  • log4net can be configured by config file and later the application can correct parameters like this:

    Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
    hierarchy.Root.Level = Level.Error;
    hierarchy.Configured = true;