Module logstash.logback.encoder
Package net.logstash.logback.appender
Class DelegatingAsyncDisruptorAppender<Event extends DeferredProcessingAware,Listener extends AppenderListener<Event>>
java.lang.Object
ch.qos.logback.core.spi.ContextAwareBase
ch.qos.logback.core.UnsynchronizedAppenderBase<Event>
net.logstash.logback.appender.AsyncDisruptorAppender<Event,Listener>
net.logstash.logback.appender.DelegatingAsyncDisruptorAppender<Event,Listener>
- Type Parameters:
Event- type of event (ILoggingEventorIAccessEvent).
- All Implemented Interfaces:
Appender<Event>,AppenderAttachable<Event>,ContextAware,FilterAttachable<Event>,LifeCycle
- Direct Known Subclasses:
AccessEventAsyncDisruptorAppender,LoggingEventAsyncDisruptorAppender
public abstract class DelegatingAsyncDisruptorAppender<Event extends DeferredProcessingAware,Listener extends AppenderListener<Event>>
extends AsyncDisruptorAppender<Event,Listener>
implements AppenderAttachable<Event>
An
AsyncDisruptorAppender that delegates appending of an event
to delegate appenders.
This is very similar to logback's AsyncAppenderBase, except that:
- it uses a
RingBufferinstead of aBlockingQueue - it allows any number of delegate appenders, instead of just one
- it flushes appenders of type
OutputStreamAppenderorFlushableat the end of a batch - it is resilient to exceptions and guarantees that all appenders are invoked
-
Nested Class Summary
Nested classes/interfaces inherited from class net.logstash.logback.appender.AsyncDisruptorAppender
AsyncDisruptorAppender.LogEvent<Event>, AsyncDisruptorAppender.LogEventFactory<Event>, AsyncDisruptorAppender.LogEventTranslator<Event> -
Field Summary
Fields inherited from class net.logstash.logback.appender.AsyncDisruptorAppender
APPENDER_NAME_FORMAT, DEFAULT_DROPPED_WARN_FREQUENCY, DEFAULT_PRODUCER_TYPE, DEFAULT_RING_BUFFER_SIZE, DEFAULT_THREAD_NAME_FORMAT, DEFAULT_WAIT_STRATEGY, listeners, THREAD_INDEX_FORMATFields inherited from class ch.qos.logback.core.UnsynchronizedAppenderBase
name, startedFields inherited from class ch.qos.logback.core.spi.ContextAwareBase
context -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddAppender(Appender<Event> newAppender) protected com.lmax.disruptor.EventHandler<AsyncDisruptorAppender.LogEvent<Event>> Create theEventHandlerto process events as they become available from the RingBuffer.voidbooleandetachAppender(Appender<Event> appender) booleandetachAppender(String name) getAppender(String name) booleanisAttached(Appender<Event> appender) voidstart()voidstop()Methods inherited from class net.logstash.logback.appender.AsyncDisruptorAppender
addListener, append, calculateThreadName, fireAppenderStarted, fireAppenderStopped, fireEventAppended, fireEventAppendFailed, getAppendRetryFrequency, getAppendTimeout, getDisruptor, getDroppedWarnFrequency, getEventTranslator, getProducerType, getRingBufferSize, getShutdownGracePeriod, getThreadFactory, getThreadNameFormat, getThreadNameFormatParams, getWaitStrategy, isAddDefaultStatusListener, isDaemon, isRingBufferEmpty, prepareForDeferredProcessing, removeListener, safelyFireEvent, setAddDefaultStatusListener, setAppendRetryFrequency, setAppendTimeout, setDaemon, setDroppedWarnFrequency, setEventFactory, setEventTranslator, setProducerType, setRingBufferSize, setShutdownGracePeriod, setThreadFactory, setThreadNameFormat, setWaitStrategy, setWaitStrategyTypeMethods inherited from class ch.qos.logback.core.UnsynchronizedAppenderBase
addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toStringMethods inherited from class ch.qos.logback.core.spi.ContextAwareBase
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContextMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ch.qos.logback.core.spi.ContextAware
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContext
-
Constructor Details
-
DelegatingAsyncDisruptorAppender
public DelegatingAsyncDisruptorAppender()
-
-
Method Details
-
createEventHandler
protected com.lmax.disruptor.EventHandler<AsyncDisruptorAppender.LogEvent<Event>> createEventHandler()Description copied from class:AsyncDisruptorAppenderCreate theEventHandlerto process events as they become available from the RingBuffer. This method is invoked when the appender is started byAsyncDisruptorAppender.start()and a newDisruptoris initialized.- Specified by:
createEventHandlerin classAsyncDisruptorAppender<Event extends DeferredProcessingAware,Listener extends AppenderListener<Event>> - Returns:
- a
EventHandlerinstance.
-
start
public void start()- Specified by:
startin interfaceLifeCycle- Overrides:
startin classAsyncDisruptorAppender<Event extends DeferredProcessingAware,Listener extends AppenderListener<Event>>
-
stop
public void stop()- Specified by:
stopin interfaceLifeCycle- Overrides:
stopin classAsyncDisruptorAppender<Event extends DeferredProcessingAware,Listener extends AppenderListener<Event>>
-
addAppender
- Specified by:
addAppenderin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-
iteratorForAppenders
- Specified by:
iteratorForAppendersin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-
getAppender
- Specified by:
getAppenderin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-
isAttached
- Specified by:
isAttachedin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-
detachAndStopAllAppenders
public void detachAndStopAllAppenders()- Specified by:
detachAndStopAllAppendersin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-
detachAppender
- Specified by:
detachAppenderin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-
detachAppender
- Specified by:
detachAppenderin interfaceAppenderAttachable<Event extends DeferredProcessingAware>
-