BufferingForwardingAppender

The BufferingForwardingAppender buffers log events in memory before forwarding them to another appender. This helps improve performance by reducing the number of writes to the destination appender, especially in high-volume logging scenarios. Once the buffer reaches a specified size or time threshold, the events are forwarded to the target appender in a batch.

The following example shows how to configure the BufferingForwardingAppender to buffer 100 messages before delivering them to the ConsoleAppender.

<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
  <bufferSize value="100"/>
  <!--
    The value configures what gets fixed immediately when calling logger.Log().
    The default value is All, which may negatively impact performance enough to warrant changing it to fix less data.
    More information can be found at https://github.com/apache/logging-log4net/blob/master/src/log4net/Core/FixFlags.cs
  -->
  <fix value="All"/>
  <appender-ref ref="ConsoleAppender" />
</appender>

This example shows how to deliver only significant events.

A LevelEvaluator is specified with a threshold of WARN. This means that the events will only be delivered when a message with level of WARN or higher level is logged.

Up to 512 bufferSize previous messages of any level will also be delivered to provide context information. Messages not sent will be discarded.

<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
  <bufferSize value="512" />
  <lossy value="true" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>
  <appender-ref ref="ConsoleAppender" />
</appender>