Class AbstractManager
- java.lang.Object
-
- org.apache.logging.log4j.core.appender.AbstractManager
-
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
HttpManager
,JndiManager
,OutputStreamManager
,SmtpManager
,WriterManager
public abstract class AbstractManager extends Object implements AutoCloseable
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 the pattern: allocate resources on construction and callclose()
at some point.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractManager(LoggerContext loggerContext, String name)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
close()
Called to signify that this Manager is no longer required by an Appender.Map<String,String>
getContentFormat()
Provide a description of the content format supported by this Manager.protected int
getCount()
LoggerContext
getLoggerContext()
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.String
getName()
Returns the name of the Manager.static boolean
hasManager(String name)
Determines if a Manager with the specified name exists.protected void
log(Level level, String message, Throwable throwable)
protected void
logDebug(String message, Throwable throwable)
protected void
logError(String message, Throwable throwable)
protected static StatusLogger
logger()
protected void
logWarn(String message, Throwable throwable)
protected static <M extends AbstractManager>
Mnarrow(Class<M> narrowClass, AbstractManager manager)
Returns the specified manager, cast to the specified narrow type.void
release()
Deprecated.In 2.7, useclose()
.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
stop(long timeout, TimeUnit timeUnit)
void
updateData(Object data)
-
-
-
Field Detail
-
LOGGER
protected static final Logger LOGGER
Allow subclasses access to the status logger without creating another instance.
-
count
protected int count
Number of Appenders using this manager.
-
-
Constructor Detail
-
AbstractManager
protected AbstractManager(LoggerContext loggerContext, String name)
-
-
Method Detail
-
close
public void close()
Called to signify that this Manager is no longer required by an Appender.- Specified by:
close
in interfaceAutoCloseable
-
stop
public boolean stop(long timeout, TimeUnit timeUnit)
-
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
public void updateData(Object data)
-
hasManager
public static boolean hasManager(String name)
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:
- LOG4J2-1908
-
logger
protected static StatusLogger logger()
-
releaseSub
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. 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
public LoggerContext 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 public void release()
Deprecated.In 2.7, useclose()
.Called to signify that this Manager is no longer required by an Appender.
-
getName
public String getName()
Returns the name of the Manager.- Returns:
- The name of the Manager.
-
getContentFormat
public Map<String,String> 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.
-
-