Search code examples
c#asp.netasp.net-corelog4netlog4net-configuration

How can I set the maxSizeRollBackups and maximumFileSize properties in my log4net configuration?


I have an ASP.NET Core web app with log4net 2.0.8 added via Nuget and initialised with this config file:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingFileAppenderInfo" type="log4net.Appender.FileAppender">
    <file type="log4net.Util.PatternString" value="Logs\mysite-dev-%utcdate{yyyy-MM-dd}-info.log" />
    <maxSizeRollBackups value="500" />
    <maximumFileSize value="5MB" />
    <threshold value="DEBUG"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p - %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="INFO" />
    </filter>
    <filter class="log4net.Filter.DenyAllFilter"/>
  </appender>
  <appender name="RollingFileAppenderError" type="log4net.Appender.FileAppender">
    <file type="log4net.Util.PatternString" value="Logs\mysite-dev-%utcdate{yyyy-MM-dd}-errors.log" />
    <maxSizeRollBackups value="500" />
    <maximumFileSize value="5MB" />
    <threshold value="WARN"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c [%x] - %m%n" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="WARN" />
      <levelMax value="ERROR" />
    </filter>
  </appender>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppenderInfo" />
    <appender-ref ref="RollingFileAppenderError" />
  </root>
</log4net>

This is initialised in Startup like this:

loggerFactory.AddLog4Net($"log4net.{env.EnvironmentName}.config");

This uses a solution I found for wiring up log4net in ASP.NET Core. Obviously there are a few versions of the above config named log4net.Development.config etc, but they're all very similar. When I run this locally in Visual Studio I see the following errors in the Output windows:

log4net:ERROR XmlHierarchyConfigurator: Cannot find Property [maxSizeRollBackups] to set object on [log4net.Appender.FileAppender]

log4net:ERROR XmlHierarchyConfigurator: Cannot find Property [maximumFileSize] to set object on [log4net.Appender.FileAppender]

These errors are internal only and don't seem to affect the running app. But I need to be able to configure these log4net properties. So how can I set the maxSizeRollBackups and maximumFileSize properties in my log4net configuration? Am I doing something wrong?


Solution

  • The properties are no part of the FileAppender, try the RollingFileAppender. That is the appender you are need:

     type="log4net.Appender.RollingFileAppender"