Class BurstFilter

All Implemented Interfaces:
Filter, LifeCycle, LifeCycle2

@Plugin(name="BurstFilter", category="Core", elementType="filter", printObject=true) public final class BurstFilter extends AbstractFilter
The BurstFilter is a logging filter that regulates logging traffic.

Use this filter when you want to control the maximum burst of log statements that can be sent to an appender. The filter is configured in the log4j configuration file. For example, the following configuration limits the number of INFO level (as well as DEBUG and TRACE) log statements that can be sent to the console to a burst of 100 with an average rate of 16 per second. WARN, ERROR and FATAL messages would continue to be delivered.

<Console name="console">
 <PatternLayout pattern="%-5p %d{dd-MMM-yyyy HH:mm:ss} %x %t %m%n"/>
 <Filters>
  <BurstFilter level="INFO" rate="16" maxBurst="100"/>
 </Filters>
</Console>

  • Field Details

    • NANOS_IN_SECONDS

      private static final long NANOS_IN_SECONDS
      See Also:
    • DEFAULT_RATE

      private static final int DEFAULT_RATE
      See Also:
    • DEFAULT_RATE_MULTIPLE

      private static final int DEFAULT_RATE_MULTIPLE
      See Also:
    • HASH_SHIFT

      private static final int HASH_SHIFT
      See Also:
    • level

      private final Level level
      Level of messages to be filtered. Anything at or below this level will be filtered out if maxBurst has been exceeded. The default is WARN meaning any messages that are higher than warn will be logged regardless of the size of a burst.
    • burstInterval

      private final long burstInterval
    • history

      private final DelayQueue<BurstFilter.LogDelay> history
    • available

      private final Queue<BurstFilter.LogDelay> available
  • Constructor Details

  • Method Details

    • createLogDelay

      static BurstFilter.LogDelay createLogDelay(long expireTime)
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object... params)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      params - An array of parameters or null.
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, Object msg, Throwable t)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      t - A throwable or null.
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, Message msg, Throwable t)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      t - A throwable or null.
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(LogEvent event)
      Description copied from class: AbstractFilter
      Context Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      event - The LogEvent.
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3, Object p4)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      p7 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7, Object p8)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      p7 - the message parameters
      p8 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7, Object p8, Object p9)
      Description copied from class: AbstractFilter
      Appender Filter method. The default returns NEUTRAL.
      Specified by:
      filter in interface Filter
      Overrides:
      filter in class AbstractFilter
      Parameters:
      logger - the Logger.
      level - The logging Level.
      marker - The Marker, if any.
      msg - The message, if present.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      p7 - the message parameters
      p8 - the message parameters
      p9 - the message parameters
      Returns:
      The Result of filtering.
    • filter

      private Filter.Result filter(Level level)
      Decide if we're going to log event based on whether the maximum burst of log statements has been exceeded.
      Parameters:
      level - The log level.
      Returns:
      The onMatch value if the filter passes, onMismatch otherwise.
    • getAvailable

      public int getAvailable()
      Returns the number of available slots. Used for unit testing.
      Returns:
      The number of available slots.
    • clear

      public void clear()
      Clear the history. Used for unit testing.
    • toString

      public String toString()
      Overrides:
      toString in class AbstractFilter
    • newBuilder

      @PluginBuilderFactory public static BurstFilter.Builder newBuilder()