Class RoutingAppender
java.lang.Object
org.apache.logging.log4j.core.AbstractLifeCycle
org.apache.logging.log4j.core.filter.AbstractFilterable
org.apache.logging.log4j.core.appender.AbstractAppender
org.apache.logging.log4j.core.appender.routing.RoutingAppender
- All Implemented Interfaces:
Appender,Filterable,LocationAware,LifeCycle,LifeCycle2
@Plugin(name="Routing",
category="Core",
elementType="appender",
printObject=true)
public final class RoutingAppender
extends AbstractAppender
This Appender "routes" between various Appenders, some of which can be references to
Appenders defined earlier in the configuration while others can be dynamically created
within this Appender as required. Routing is achieved by specifying a pattern on
the Routing appender declaration. The pattern should contain one or more substitution patterns of
the form "$${[key:]token}". The pattern will be resolved each time the Appender is called using
the built in StrSubstitutor and the StrLookup plugin that matches the specified key.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classRoutingAppender.Builder<B extends RoutingAppender.Builder<B>>private static final classprivate static final classprivate static classLOG4J2-2629: PurgePolicy implementations can invokedeleteAppender(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.Nested classes/interfaces inherited from interface org.apache.logging.log4j.core.LifeCycle
LifeCycle.State -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Configurationprivate final ConcurrentMap<String, RoutingAppender.CreatedRouteAppenderControl> private final Map<String, AppenderControl> private static final Stringprivate Routeprivate final AbstractScriptprivate final PurgePolicyprivate final ConcurrentMap<String, RoutingAppender.RouteAppenderControl> private final RewritePolicyprivate final Routesprivate final ConcurrentMap<Object, Object> static final StringFields inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
DEFAULT_STOP_TIMEOUT, DEFAULT_STOP_TIMEUNIT, LOGGERFields inherited from interface org.apache.logging.log4j.core.Appender
ELEMENT_TYPE, EMPTY_ARRAY -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateRoutingAppender(String name, Filter filter, boolean ignoreExceptions, Routes routes, RewritePolicy rewritePolicy, Configuration configuration, PurgePolicy purgePolicy, AbstractScript defaultRouteScript, Property[] properties) -
Method Summary
Modifier and TypeMethodDescriptionvoidLogs a LogEvent using whatever logic this Appender wishes to use.static RoutingAppendercreateAppender(String name, String ignore, Routes routes, Configuration config, RewritePolicy rewritePolicy, PurgePolicy purgePolicy, Filter filter) Deprecated.private AppendercreateAppender(Route route, LogEvent event) voiddeleteAppender(String key) Deletes the specified appender.getAppender(String key) Returns an unmodifiable view of the appenders created by thisRoutingAppender.getControl(String key, LogEvent event) static <B extends RoutingAppender.Builder<B>>
Bvoidstart()Make the Filter available for use.booleanCleanup the Filter.private voidupdatePurgePolicy(String key, LogEvent event) Methods inherited from class org.apache.logging.log4j.core.appender.AbstractAppender
error, error, error, getHandler, getLayout, getName, ignoreExceptions, parseInt, requiresLocation, setHandler, toSerializable, toStringMethods inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
addFilter, getFilter, getPropertyArray, hasFilter, isFiltered, removeFilter, stopMethods 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
-
Field Details
-
STATIC_VARIABLES_KEY
- See Also:
-
DEFAULT_KEY
- See Also:
-
routes
-
defaultRoute
-
configuration
-
createdAppenders
-
createdAppendersUnmodifiableView
-
referencedAppenders
-
rewritePolicy
-
purgePolicy
-
defaultRouteScript
-
scriptStaticVariables
-
-
Constructor Details
-
RoutingAppender
private RoutingAppender(String name, Filter filter, boolean ignoreExceptions, Routes routes, RewritePolicy rewritePolicy, Configuration configuration, PurgePolicy purgePolicy, AbstractScript defaultRouteScript, Property[] properties)
-
-
Method Details
-
newBuilder
-
start
public void start()Description copied from class:AbstractFilterableMake the Filter available for use.- Specified by:
startin interfaceLifeCycle- Overrides:
startin classAbstractFilterable
-
stop
Description copied from class:AbstractFilterableCleanup the Filter.- Specified by:
stopin interfaceLifeCycle2- Overrides:
stopin classAbstractFilterable- 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.
-
append
Description copied from interface:AppenderLogs a LogEvent using whatever logic this Appender wishes to use. It is typically recommended to use a bridge pattern not only for the benefits from decoupling an Appender from its implementation, but it is also handy for sharing resources which may require some form of locking.- Parameters:
event- The LogEvent.
-
updatePurgePolicy
-
getControl
-
getAppender
-
createAppender
-
getAppenders
Returns an unmodifiable view of the appenders created by thisRoutingAppender. Note that this map does not contain appenders that are routed by reference. -
deleteAppender
Deletes the specified appender.- Parameters:
key- The appender's key
-
createAppender
@Deprecated public static RoutingAppender createAppender(String name, String ignore, Routes routes, Configuration config, RewritePolicy rewritePolicy, PurgePolicy purgePolicy, Filter filter) Deprecated.Since 2.7; usenewBuilder()Creates a RoutingAppender.- Parameters:
name- The name of the Appender.ignore- If"true"(default) exceptions encountered when appending events are logged; otherwise they are propagated to the caller.routes- The routing definitions.config- The Configuration (automatically added by the Configuration).rewritePolicy- A RewritePolicy, if any.filter- A Filter to restrict events processed by the Appender or null.- Returns:
- The RoutingAppender
-
getDefaultRoute
-
getDefaultRouteScript
-
getPurgePolicy
-
getRewritePolicy
-
getRoutes
-
getConfiguration
-
getScriptStaticVariables
-
newBuilder()