Class AsyncLoggerConfigDisruptor
- java.lang.Object
-
- org.apache.logging.log4j.core.AbstractLifeCycle
-
- org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor
-
- All Implemented Interfaces:
AsyncLoggerConfigDelegate,LifeCycle,LifeCycle2
public class AsyncLoggerConfigDisruptor extends AbstractLifeCycle implements AsyncLoggerConfigDelegate
Helper class decoupling theAsyncLoggerConfigclass from the LMAX Disruptor library.AsyncLoggerConfigis a plugin, and will be loaded even if users do not configure any<asyncLogger>or<asyncRoot>elements in the configuration. IfAsyncLoggerConfighas inner classes that extend or implement classes from the Disruptor library, aNoClassDefFoundErroris thrown if the Disruptor jar is not in the classpath when the PluginManager loads theAsyncLoggerConfigplugin from the pre-defined plugins definition file.This class serves to make the dependency on the Disruptor optional, so that these classes are only loaded when the
AsyncLoggerConfigis actually used.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAsyncLoggerConfigDisruptor.Log4jEventWrapperRingBuffer events contain all information necessary to perform the work in a separate thread.-
Nested classes/interfaces inherited from interface org.apache.logging.log4j.core.LifeCycle
LifeCycle.State
-
-
Field Summary
-
Fields inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
DEFAULT_STOP_TIMEOUT, DEFAULT_STOP_TIMEUNIT, LOGGER
-
-
Constructor Summary
Constructors Constructor Description AsyncLoggerConfigDisruptor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RingBufferAdmincreateRingBufferAdmin(java.lang.String contextName, java.lang.String loggerConfigName)Creates and returns a newRingBufferAdminthat instruments the ringbuffer of thisAsyncLoggerConfig.voidenqueueEvent(LogEvent event, AsyncLoggerConfig asyncLoggerConfig)EventRoutegetEventRoute(Level logLevel)Returns theEventRoutefor the event with the specified level.voidsetLogEventFactory(LogEventFactory logEventFactory)Notifies the delegate what LogEventFactory an AsyncLoggerConfig is using, so the delegate can determine whether to populate the ring buffer with mutable log events or not.voidstart()Increases the reference count and creates and starts a new Disruptor and associated thread if none currently exists.booleanstop(long timeout, java.util.concurrent.TimeUnit timeUnit)Decreases the reference count.booleantryEnqueue(LogEvent event, AsyncLoggerConfig asyncLoggerConfig)-
Methods inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
equalsImpl, getState, getStatusLogger, hashCodeImpl, initialize, isInitialized, isStarted, isStarting, isStopped, isStopping, setStarted, setStarting, setState, setStopped, setStopping, stop, stop
-
-
-
-
Method Detail
-
setLogEventFactory
public void setLogEventFactory(LogEventFactory logEventFactory)
Description copied from interface:AsyncLoggerConfigDelegateNotifies the delegate what LogEventFactory an AsyncLoggerConfig is using, so the delegate can determine whether to populate the ring buffer with mutable log events or not. This method may be invoced multiple times for all AsyncLoggerConfigs that use this delegate.- Specified by:
setLogEventFactoryin interfaceAsyncLoggerConfigDelegate- Parameters:
logEventFactory- the factory used
-
start
public void start()
Increases the reference count and creates and starts a new Disruptor and associated thread if none currently exists.- Specified by:
startin interfaceLifeCycle- Overrides:
startin classAbstractLifeCycle- See Also:
AbstractLifeCycle.stop()
-
stop
public boolean stop(long timeout, java.util.concurrent.TimeUnit timeUnit)Decreases the reference count. If the reference count reached zero, the Disruptor and its associated thread are shut down and their references set tonull.- Specified by:
stopin interfaceLifeCycle2- Overrides:
stopin classAbstractLifeCycle- Parameters:
timeout- the maximum time to waittimeUnit- the time unit of the timeout argument- Returns:
- true if the receiver was stopped cleanly and normally, false otherwise.
-
getEventRoute
public EventRoute getEventRoute(Level logLevel)
Description copied from interface:AsyncLoggerConfigDelegateReturns theEventRoutefor the event with the specified level.- Specified by:
getEventRoutein interfaceAsyncLoggerConfigDelegate- Parameters:
logLevel- the level of the event to log- Returns:
- the
EventRoute
-
enqueueEvent
public void enqueueEvent(LogEvent event, AsyncLoggerConfig asyncLoggerConfig)
- Specified by:
enqueueEventin interfaceAsyncLoggerConfigDelegate
-
tryEnqueue
public boolean tryEnqueue(LogEvent event, AsyncLoggerConfig asyncLoggerConfig)
- Specified by:
tryEnqueuein interfaceAsyncLoggerConfigDelegate
-
createRingBufferAdmin
public RingBufferAdmin createRingBufferAdmin(java.lang.String contextName, java.lang.String loggerConfigName)
Description copied from interface:AsyncLoggerConfigDelegateCreates and returns a newRingBufferAdminthat instruments the ringbuffer of thisAsyncLoggerConfig.- Specified by:
createRingBufferAdminin interfaceAsyncLoggerConfigDelegate- Parameters:
contextName- name of theLoggerContextloggerConfigName- name of the logger config- Returns:
- the RingBufferAdmin that instruments the ringbuffer
-
-