Class AbstractManager
java.lang.Object
org.apache.logging.log4j.core.appender.AbstractManager
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
AbstractDatabaseManager
,HttpManager
,JeroMqManager
,JmsManager
,JndiManager
,KafkaManager
,MailManager
,OutputStreamManager
,WriterManager
Abstract base class used to register managers.
This class implements AutoCloseable
mostly to allow unit tests to be written safely and succinctly. While
managers do need to allocate resources (usually on construction) and then free these resources, a manager is longer
lived than other auto-closeable objects like streams. None the less, making a manager AutoCloseable forces readers to
be aware of the pattern: allocate resources on construction and call close()
at some point.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
Implementations should extend this class for passing data between the getManager method and the manager factory class. -
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractManager
(LoggerContext loggerContext, String name) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Called to signify that this Manager is no longer required by an Appender.Provide a description of the content format supported by this Manager.protected int
getCount()
Gets the logger context used to create this instance or null.static <M extends AbstractManager,
T>
MgetManager
(String name, ManagerFactory<M, T> factory, T data) Retrieves a Manager if it has been previously created or creates a new Manager.getName()
Returns the name of the Manager.protected StrSubstitutor
Gets my configuration's StrSubstitutor or null.static boolean
hasManager
(String name) Determines if a Manager with the specified name exists.protected void
protected void
protected void
protected static StatusLogger
logger()
protected void
protected static <M extends AbstractManager>
Mnarrow
(Class<M> narrowClass, AbstractManager manager) Returns the specified manager, cast to the specified narrow type.void
release()
Deprecated.protected boolean
releaseSub
(long timeout, TimeUnit timeUnit) May be overridden by managers to perform processing while the manager is being released and the lock is held.boolean
void
updateData
(Object data) Used by Log4j to update the Manager during reconfiguration.
-
Field Details
-
LOGGER
Allow subclasses access to the status logger without creating another instance. -
count
protected int countNumber of Appenders using this manager.
-
-
Constructor Details
-
AbstractManager
-
-
Method Details
-
close
public void close()Called to signify that this Manager is no longer required by an Appender.- Specified by:
close
in interfaceAutoCloseable
-
stop
-
getManager
public static <M extends AbstractManager,T> M getManager(String name, ManagerFactory<M, T> factory, T data) Retrieves a Manager if it has been previously created or creates a new Manager.- Type Parameters:
M
- The Type of the Manager to be created.T
- The type of the Factory data.- Parameters:
name
- The name of the Manager to retrieve.factory
- The Factory to use to create the Manager.data
- An Object that should be passed to the factory when creating the Manager.- Returns:
- A Manager with the specified name and type.
-
updateData
Used by Log4j to update the Manager during reconfiguration. This method should be considered private. Implementations may not be thread safe. This method may be made protected in a future release.- Parameters:
data
- The data to update.
-
hasManager
Determines if a Manager with the specified name exists.- Parameters:
name
- The name of the Manager.- Returns:
- True if the Manager exists, false otherwise.
-
narrow
protected static <M extends AbstractManager> M narrow(Class<M> narrowClass, AbstractManager manager) Returns the specified manager, cast to the specified narrow type.- Type Parameters:
M
- the narrow type- Parameters:
narrowClass
- the type to cast tomanager
- the manager object to return- Returns:
- the specified manager, cast to the specified narrow type
- Throws:
ConfigurationException
- if the manager cannot be cast to the specified type, which only happens when the configuration has multiple incompatible appenders pointing to the same resource- Since:
- 2.9
- See Also:
-
logger
-
releaseSub
May be overridden by managers to perform processing while the manager is being released and the lock is held. A timeout is passed for implementors to use as they see fit.- Parameters:
timeout
- timeouttimeUnit
- timeout time unit- Returns:
- true if all resources were closed normally, false otherwise.
-
getCount
protected int getCount() -
getLoggerContext
Gets the logger context used to create this instance or null. The logger context is usually set when an appender creates a manager and that appender is given a Configuration. Not all appenders are given a Configuration by their factory method or builder.- Returns:
- the logger context used to create this instance or null.
-
release
Deprecated.In 2.7, useclose()
.Called to signify that this Manager is no longer required by an Appender. -
getName
Returns the name of the Manager.- Returns:
- The name of the Manager.
-
getContentFormat
Provide a description of the content format supported by this Manager. Default implementation returns an empty (unspecified) Map.- Returns:
- a Map of key/value pairs describing the Manager-specific content format, or an empty Map if no content format descriptors are specified.
-
getStrSubstitutor
Gets my configuration's StrSubstitutor or null.- Returns:
- my configuration's StrSubstitutor or null.
-
log
-
logDebug
-
logError
-
logWarn
-
close()
.