Class AbstractDatabaseAppender<T extends AbstractDatabaseManager>
- 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.db.AbstractDatabaseAppender<T>
-
- Type Parameters:
T- Specifies which type ofAbstractDatabaseManagerthis Appender requires.
- All Implemented Interfaces:
Appender,Filterable,LocationAware,LifeCycle,LifeCycle2
- Direct Known Subclasses:
JdbcAppender,NoSqlAppender
public abstract class AbstractDatabaseAppender<T extends AbstractDatabaseManager> extends AbstractAppender
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractDatabaseAppender.Builder<B extends AbstractDatabaseAppender.Builder<B>>-
Nested classes/interfaces inherited from interface org.apache.logging.log4j.core.LifeCycle
LifeCycle.State
-
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_RECONNECT_INTERVAL_MILLISprivate java.util.concurrent.locks.ReadWriteLocklockprivate Tmanagerprivate java.util.concurrent.locks.LockreadLockprivate java.util.concurrent.locks.LockwriteLock-
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, EMPTY_ARRAY
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractDatabaseAppender(java.lang.String name, Filter filter, boolean ignoreExceptions, T manager)protectedAbstractDatabaseAppender(java.lang.String name, Filter filter, Layout<? extends java.io.Serializable> layout, boolean ignoreExceptions, Property[] properties, T manager)Instantiates the base appender.protectedAbstractDatabaseAppender(java.lang.String name, Filter filter, Layout<? extends java.io.Serializable> layout, boolean ignoreExceptions, T manager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidappend(LogEvent event)Logs a LogEvent using whatever logic this Appender wishes to use.Layout<LogEvent>getLayout()This always returnsnull, as database appenders do not use a single layout.TgetManager()Returns the underlying manager in use within this appender.protected voidreplaceManager(T manager)Replaces the underlying manager in use within this appender.voidstart()Make the Filter available for use.booleanstop(long timeout, java.util.concurrent.TimeUnit timeUnit)Cleanup the Filter.-
Methods inherited from class org.apache.logging.log4j.core.appender.AbstractAppender
error, error, error, getHandler, getName, ignoreExceptions, parseInt, requiresLocation, setHandler, toSerializable, toString
-
Methods inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
addFilter, getFilter, getPropertyArray, hasFilter, isFiltered, removeFilter, 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_RECONNECT_INTERVAL_MILLIS
public static final int DEFAULT_RECONNECT_INTERVAL_MILLIS
- See Also:
- Constant Field Values
-
lock
private final java.util.concurrent.locks.ReadWriteLock lock
-
readLock
private final java.util.concurrent.locks.Lock readLock
-
writeLock
private final java.util.concurrent.locks.Lock writeLock
-
manager
private T extends AbstractDatabaseManager manager
-
-
Constructor Detail
-
AbstractDatabaseAppender
@Deprecated protected AbstractDatabaseAppender(java.lang.String name, Filter filter, boolean ignoreExceptions, T manager)Deprecated.Instantiates the base appender.- Parameters:
name- The appender name.filter- The filter, if any, to use.ignoreExceptions- Iftrueexceptions encountered when appending events are logged; otherwise they are propagated to the caller.manager- The matchingAbstractDatabaseManagerimplementation.
-
AbstractDatabaseAppender
protected AbstractDatabaseAppender(java.lang.String name, Filter filter, Layout<? extends java.io.Serializable> layout, boolean ignoreExceptions, Property[] properties, T manager)Instantiates the base appender.- Parameters:
name- The appender name.filter- The filter, if any, to use.layout- The layout to use to format the event.ignoreExceptions- Iftrueexceptions encountered when appending events are logged; otherwise they are propagated to the caller.manager- The matchingAbstractDatabaseManagerimplementation.
-
AbstractDatabaseAppender
@Deprecated protected AbstractDatabaseAppender(java.lang.String name, Filter filter, Layout<? extends java.io.Serializable> layout, boolean ignoreExceptions, T manager)Deprecated.Instantiates the base appender.- Parameters:
name- The appender name.filter- The filter, if any, to use.layout- The layout to use to format the event.ignoreExceptions- Iftrueexceptions encountered when appending events are logged; otherwise they are propagated to the caller.manager- The matchingAbstractDatabaseManagerimplementation.
-
-
Method Detail
-
append
public final void append(LogEvent event)
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.
-
getLayout
public final Layout<LogEvent> getLayout()
This always returnsnull, as database appenders do not use a single layout. The JPA and NoSQL appenders do not use a layout at all. The JDBC appender has a layout-per-column pattern.- Specified by:
getLayoutin interfaceAppender- Overrides:
getLayoutin classAbstractAppender- Returns:
null.
-
getManager
public final T getManager()
Returns the underlying manager in use within this appender.- Returns:
- the manager.
-
replaceManager
protected final void replaceManager(T manager)
Replaces the underlying manager in use within this appender. This can be useful for manually changing the way log events are written to the database without losing buffered or in-progress events. The existing manager is released only after the new manager has been installed. This method is thread-safe.- Parameters:
manager- The new manager to install.
-
start
public final void start()
Description copied from class:AbstractFilterableMake the Filter available for use.- Specified by:
startin interfaceLifeCycle- Overrides:
startin classAbstractFilterable
-
stop
public boolean stop(long timeout, java.util.concurrent.TimeUnit timeUnit)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.
-
-