Class AsyncBufferFullFallbackAppender

java.lang.Object
ch.qos.logback.core.spi.ContextAwareBase
ch.qos.logback.core.UnsynchronizedAppenderBase<E>
ch.qos.logback.core.AsyncAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
ch.admin.bag.covidcertificate.log.async.AsyncBufferFullFallbackAppender
All Implemented Interfaces:
ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent>, ch.qos.logback.core.spi.AppenderAttachable<ch.qos.logback.classic.spi.ILoggingEvent>, ch.qos.logback.core.spi.ContextAware, ch.qos.logback.core.spi.FilterAttachable<ch.qos.logback.classic.spi.ILoggingEvent>, ch.qos.logback.core.spi.LifeCycle

public class AsyncBufferFullFallbackAppender extends ch.qos.logback.core.AsyncAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
Async appender with a reference to a fallback appender to use if the async logging event buffer is nearing capacity. Compared to the AsyncAppender from logback, the AsyncBufferFullFallbackAppender will spill over log events to the fallback instead of blocking or discarding log events in case the buffer is nearly full.

The fallback is used if less than fallbackThreshold (default: 20%) of the buffer size is available.

Typical use case: Spill over log events to a faster appender if the appender logged to by the async appender cannot keep up with the amount of logged events.

The fallback appender can be disabled using setUseFallbackAppender(boolean), which is useful to allow for configuratively disabling the fallback mechanism via a property. In this case the appender behaves just like the AsyncAppender from logback.

  • Field Summary

    Fields inherited from class ch.qos.logback.core.AsyncAppenderBase

    DEFAULT_MAX_FLUSH_TIME, DEFAULT_QUEUE_SIZE

    Fields inherited from class ch.qos.logback.core.UnsynchronizedAppenderBase

    name, started

    Fields inherited from class ch.qos.logback.core.spi.ContextAwareBase

    context
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    append(ch.qos.logback.classic.spi.ILoggingEvent eventObject)
    Append a log event asynchronously, falling back to the fallback appender if getRemainingCapacity() <= fallbackThreshold
    protected void
    preprocess(ch.qos.logback.classic.spi.ILoggingEvent eventObject)
     
    void
     
    void
    setFallbackThreshold(int fallbackThreshold)
     
    void
    setUseFallbackAppender(boolean useFallbackAppender)
     
    void
     
    void
     

    Methods inherited from class ch.qos.logback.core.AsyncAppenderBase

    addAppender, detachAndStopAllAppenders, detachAppender, detachAppender, getAppender, getDiscardingThreshold, getMaxFlushTime, getNumberOfElementsInQueue, getQueueSize, getRemainingCapacity, isAttached, isDiscardable, isNeverBlock, iteratorForAppenders, setDiscardingThreshold, setMaxFlushTime, setNeverBlock, setQueueSize

    Methods inherited from class ch.qos.logback.core.UnsynchronizedAppenderBase

    addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toString

    Methods inherited from class ch.qos.logback.core.spi.ContextAwareBase

    addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContext

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface ch.qos.logback.core.spi.ContextAware

    addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContext
  • Constructor Details

    • AsyncBufferFullFallbackAppender

      public AsyncBufferFullFallbackAppender()
  • Method Details

    • append

      protected void append(ch.qos.logback.classic.spi.ILoggingEvent eventObject)
      Append a log event asynchronously, falling back to the fallback appender if getRemainingCapacity() <= fallbackThreshold
      Overrides:
      append in class ch.qos.logback.core.AsyncAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
    • preprocess

      protected void preprocess(ch.qos.logback.classic.spi.ILoggingEvent eventObject)
      Overrides:
      preprocess in class ch.qos.logback.core.AsyncAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
    • start

      public void start()
      Specified by:
      start in interface ch.qos.logback.core.spi.LifeCycle
      Overrides:
      start in class ch.qos.logback.core.AsyncAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
    • stop

      public void stop()
      Specified by:
      stop in interface ch.qos.logback.core.spi.LifeCycle
      Overrides:
      stop in class ch.qos.logback.core.AsyncAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
    • setUseFallbackAppender

      public void setUseFallbackAppender(boolean useFallbackAppender)
    • setFallbackThreshold

      public void setFallbackThreshold(int fallbackThreshold)
    • setFallback

      public void setFallback(FallbackAppenderRef fallback)