Class FailoverAppender
- 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.FailoverAppender
-
- All Implemented Interfaces:
Appender
,Filterable
,LocationAware
,LifeCycle
,LifeCycle2
@Plugin(name="Failover", category="Core", elementType="appender", printObject=true) public final class FailoverAppender extends AbstractAppender
The FailoverAppender will capture exceptions in an Appender and then route the event to a different appender. Hopefully it is obvious that the Appenders must be configured to not suppress exceptions for the FailoverAppender to work.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.logging.log4j.core.appender.AbstractAppender
AbstractAppender.Builder<B extends AbstractAppender.Builder<B>>
-
Nested classes/interfaces inherited from interface org.apache.logging.log4j.core.LifeCycle
LifeCycle.State
-
-
Field Summary
Fields Modifier and Type Field Description private Configuration
config
private static int
DEFAULT_INTERVAL_SECONDS
private java.util.List<AppenderControl>
failoverAppenders
private java.lang.String[]
failovers
private long
intervalNanos
private long
nextCheckNanos
private AppenderControl
primary
private java.lang.String
primaryRef
-
Fields inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
DEFAULT_STOP_TIMEOUT, DEFAULT_STOP_TIMEUNIT, LOGGER
-
Fields inherited from interface org.apache.logging.log4j.core.Appender
ELEMENT_TYPE
-
-
Constructor Summary
Constructors Modifier Constructor Description private
FailoverAppender(java.lang.String name, Filter filter, java.lang.String primary, java.lang.String[] failovers, int intervalMillis, Configuration config, boolean ignoreExceptions, Property[] properties)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
append(LogEvent event)
Handle the Log event.private void
callAppender(LogEvent event)
static FailoverAppender
createAppender(java.lang.String name, java.lang.String primary, java.lang.String[] failovers, java.lang.String retryIntervalSeconds, Configuration config, Filter filter, java.lang.String ignore)
Create a Failover Appender.private void
failover(LogEvent event, java.lang.Exception ex)
void
start()
Make the Filter available for use.java.lang.String
toString()
-
Methods inherited from class org.apache.logging.log4j.core.appender.AbstractAppender
error, error, error, getHandler, getLayout, getName, ignoreExceptions, parseInt, requiresLocation, setHandler, toSerializable
-
Methods inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
addFilter, getFilter, getPropertyArray, hasFilter, isFiltered, removeFilter, 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
-
-
-
-
Field Detail
-
DEFAULT_INTERVAL_SECONDS
private static final int DEFAULT_INTERVAL_SECONDS
- See Also:
- Constant Field Values
-
primaryRef
private final java.lang.String primaryRef
-
failovers
private final java.lang.String[] failovers
-
config
private final Configuration config
-
primary
private AppenderControl primary
-
failoverAppenders
private final java.util.List<AppenderControl> failoverAppenders
-
intervalNanos
private final long intervalNanos
-
nextCheckNanos
private volatile long nextCheckNanos
-
-
Constructor Detail
-
FailoverAppender
private FailoverAppender(java.lang.String name, Filter filter, java.lang.String primary, java.lang.String[] failovers, int intervalMillis, Configuration config, boolean ignoreExceptions, Property[] properties)
-
-
Method Detail
-
start
public void start()
Description copied from class:AbstractFilterable
Make the Filter available for use.- Specified by:
start
in interfaceLifeCycle
- Overrides:
start
in classAbstractFilterable
-
append
public void append(LogEvent event)
Handle the Log event.- Parameters:
event
- The LogEvent.
-
callAppender
private void callAppender(LogEvent event)
-
failover
private void failover(LogEvent event, java.lang.Exception ex)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classAbstractAppender
-
createAppender
@PluginFactory public static FailoverAppender createAppender(@PluginAttribute("name") java.lang.String name, @PluginAttribute("primary") java.lang.String primary, @PluginElement("Failovers") java.lang.String[] failovers, @PluginAliases("retryInterval") @PluginAttribute("retryIntervalSeconds") java.lang.String retryIntervalSeconds, @PluginConfiguration Configuration config, @PluginElement("Filter") Filter filter, @PluginAttribute("ignoreExceptions") java.lang.String ignore)
Create a Failover Appender.- Parameters:
name
- The name of the Appender (required).primary
- The name of the primary Appender (required).failovers
- The name of one or more Appenders to fail over to (at least one is required).retryIntervalSeconds
- The retry interval in seconds.config
- The current Configuration (passed by the Configuration when the appender is created).filter
- A Filter (optional).ignore
- If"true"
(default) exceptions encountered when appending events are logged; otherwise they are propagated to the caller.- Returns:
- The FailoverAppender that was created.
-
-