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
private abstract static class RoutingAppender.RouteAppenderControl extends AppenderControl
LOG4J2-2629: PurgePolicy implementations can invokeRoutingAppender.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 ofAppenderControl
allows to to mark usage of an appender, allowing deferral ofLifeCycle.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 inRoutingAppender.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 Constructor Description RouteAppenderControl(Appender appender)
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description (package private) abstract void
checkout()
(package private) abstract void
release()
-
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 Detail
-
RouteAppenderControl
RouteAppenderControl(Appender appender)
-
-