java.lang.Object
ch.qos.logback.core.spi.ContextAwareBase
ch.qos.logback.core.UnsynchronizedAppenderBase<E>
ch.qos.logback.core.AsyncAppenderBase<E>
- Type Parameters:
E
-
- All Implemented Interfaces:
Appender<E>
,AppenderAttachable<E>
,ContextAware
,FilterAttachable<E>
,LifeCycle
- Direct Known Subclasses:
AsyncAppender
public class AsyncAppenderBase<E>
extends UnsynchronizedAppenderBase<E>
implements AppenderAttachable<E>
This appender and derived classes, log events asynchronously. In order to
avoid loss of logging events, this appender should be closed. It is the
user's responsibility to close appenders, typically at the end of the
application lifecycle.
This appender buffers events in a BlockingQueue
. AsyncAppenderBase<E>.ch.qos.logback.core.AsyncAppenderBase.Worker
thread created by this appender takes events from the head of the queue, and
dispatches them to the single appender attached to this appender.
Please refer to the logback manual for further information about this appender.
- Since:
- 1.0.4
- Author:
- Ceki Gülcü, Torsten Juergeleit
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The default maximum queue flush time allowed during appender stop.static final int
The default buffer 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addAppender
(Appender<E> newAppender) Add an appender.protected void
void
Detach and processPriorToRemoval all previously added appenders.boolean
detachAppender
(Appender<E> eAppender) Detach the appender passed as parameter from the list of appenders.boolean
detachAppender
(String name) Detach the appender with the name passed as parameter from the list of appenders.getAppender
(String name) Get an appender by name.int
int
int
Returns the number of elements currently in the blocking queue.int
int
The remaining capacity available in the blocking queue.boolean
isAttached
(Appender<E> eAppender) Returnstrue
if the specified appender is in list of attached,false
otherwise.protected boolean
isDiscardable
(E eventObject) Is the eventObject passed as parameter discardable? The base class's implementation of this method always returns 'false' but sub-classes may (and do) override this method.boolean
Get an iterator for appenders contained in the parent object.protected void
preprocess
(E eventObject) Pre-process the event prior to queueing.void
setDiscardingThreshold
(int discardingThreshold) void
setMaxFlushTime
(int maxFlushTime) void
setNeverBlock
(boolean neverBlock) void
setQueueSize
(int queueSize) void
start()
void
stop()
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
-
Field Details
-
DEFAULT_QUEUE_SIZE
The default buffer size.- See Also:
-
DEFAULT_MAX_FLUSH_TIME
The default maximum queue flush time allowed during appender stop. If the worker takes longer than this time it will exit, discarding any remaining items in the queue- See Also:
-
-
Constructor Details
-
AsyncAppenderBase
public AsyncAppenderBase()
-
-
Method Details
-
isDiscardable
Is the eventObject passed as parameter discardable? The base class's implementation of this method always returns 'false' but sub-classes may (and do) override this method.Note that only if the buffer is nearly full are events discarded. Otherwise, when the buffer is "not full" all events are logged.
- Parameters:
eventObject
-- Returns:
- - true if the event can be discarded, false otherwise
-
preprocess
Pre-process the event prior to queueing. The base class does no pre-processing but subclasses can override this behavior.- Parameters:
eventObject
-
-
start
- Specified by:
start
in interfaceLifeCycle
- Overrides:
start
in classUnsynchronizedAppenderBase<E>
-
stop
- Specified by:
stop
in interfaceLifeCycle
- Overrides:
stop
in classUnsynchronizedAppenderBase<E>
-
append
- Specified by:
append
in classUnsynchronizedAppenderBase<E>
-
getQueueSize
-
setQueueSize
-
getDiscardingThreshold
-
setDiscardingThreshold
-
getMaxFlushTime
-
setMaxFlushTime
-
getNumberOfElementsInQueue
Returns the number of elements currently in the blocking queue.- Returns:
- number of elements currently in the queue.
-
setNeverBlock
-
isNeverBlock
-
getRemainingCapacity
The remaining capacity available in the blocking queue.See also
BlockingQueue#remainingCapacity()
- Returns:
- the remaining capacity
-
addAppender
Description copied from interface:AppenderAttachable
Add an appender.- Specified by:
addAppender
in interfaceAppenderAttachable<E>
-
iteratorForAppenders
Description copied from interface:AppenderAttachable
Get an iterator for appenders contained in the parent object.- Specified by:
iteratorForAppenders
in interfaceAppenderAttachable<E>
-
getAppender
Description copied from interface:AppenderAttachable
Get an appender by name.- Specified by:
getAppender
in interfaceAppenderAttachable<E>
-
isAttached
Description copied from interface:AppenderAttachable
Returnstrue
if the specified appender is in list of attached,false
otherwise.- Specified by:
isAttached
in interfaceAppenderAttachable<E>
-
detachAndStopAllAppenders
Description copied from interface:AppenderAttachable
Detach and processPriorToRemoval all previously added appenders.- Specified by:
detachAndStopAllAppenders
in interfaceAppenderAttachable<E>
-
detachAppender
Description copied from interface:AppenderAttachable
Detach the appender passed as parameter from the list of appenders.- Specified by:
detachAppender
in interfaceAppenderAttachable<E>
-
detachAppender
Description copied from interface:AppenderAttachable
Detach the appender with the name passed as parameter from the list of appenders.- Specified by:
detachAppender
in interfaceAppenderAttachable<E>
-