Class RoutingAppender.RouteAppenderControl
java.lang.Object
org.apache.logging.log4j.core.AbstractLifeCycle
org.apache.logging.log4j.core.filter.AbstractFilterable
org.apache.logging.log4j.core.config.AppenderControl
org.apache.logging.log4j.core.appender.routing.RoutingAppender.RouteAppenderControl
- All Implemented Interfaces:
Filterable
,LifeCycle
,LifeCycle2
- Direct Known Subclasses:
RoutingAppender.CreatedRouteAppenderControl
,RoutingAppender.ReferencedRouteAppenderControl
- Enclosing class:
RoutingAppender
LOG4J2-2629: PurgePolicy implementations can invoke
RoutingAppender.deleteAppender(String)
after we have looked up
an instance of a target appender but before events are appended, which could result in events not being
recorded to any appender.
This extension of AppenderControl
allows to mark usage of an appender, allowing deferral of
LifeCycle.stop()
until events have successfully been recorded.
Alternative approaches considered:
- More aggressive synchronization: Appenders may do expensive I/O that shouldn't block routing.
- Move the 'updatePurgePolicy' invocation before appenders are called: Unfortunately this approach doesn't work
if we consider an ImmediatePurgePolicy (or IdlePurgePolicy with a very small timeout) because it may attempt
to remove an appender that doesn't exist yet. It's counterintuitive to get an event that a route has been
used at a point when we expect the route doesn't exist in RoutingAppender.getAppenders()
.-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
AbstractFilterable.Builder<B extends AbstractFilterable.Builder<B>>
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 -
Method Summary
Methods inherited from class org.apache.logging.log4j.core.config.AppenderControl
callAppender, equals, getAppender, getAppenderName, hashCode, toString
Methods inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
addFilter, getFilter, getPropertyArray, hasFilter, isFiltered, removeFilter, start, stop, stop
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
-
Constructor Details
-
RouteAppenderControl
RouteAppenderControl(Appender appender)
-
-
Method Details
-
checkout
abstract void checkout() -
release
abstract void release()
-