public abstract class AbstractManager
extends java.lang.Object
implements java.lang.AutoCloseable
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 call close()
at some point.
Modifier and Type | Field and Description |
---|---|
protected int |
count
Number of Appenders using this manager.
|
private static java.util.concurrent.locks.Lock |
LOCK |
protected static Logger |
LOGGER
Allow subclasses access to the status logger without creating another instance.
|
private LoggerContext |
loggerContext |
private static java.util.Map<java.lang.String,AbstractManager> |
MAP |
private java.lang.String |
name |
Modifier | Constructor and Description |
---|---|
protected |
AbstractManager(LoggerContext loggerContext,
java.lang.String name) |
Modifier and Type | Method and Description |
---|---|
void |
close()
Called to signify that this Manager is no longer required by an Appender.
|
java.util.Map<java.lang.String,java.lang.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> |
getManager(java.lang.String name,
ManagerFactory<M,T> factory,
T data)
Retrieves a Manager if it has been previously created or creates a new Manager.
|
java.lang.String |
getName()
Returns the name of the Manager.
|
static boolean |
hasManager(java.lang.String name)
Determines if a Manager with the specified name exists.
|
protected void |
log(Level level,
java.lang.String message,
java.lang.Throwable throwable) |
protected void |
logDebug(java.lang.String message,
java.lang.Throwable throwable) |
protected void |
logError(java.lang.String message,
java.lang.Throwable throwable) |
protected void |
logWarn(java.lang.String message,
java.lang.Throwable throwable) |
protected static <M extends AbstractManager> |
narrow(java.lang.Class<M> narrowClass,
AbstractManager manager)
Returns the specified manager, cast to the specified narrow type.
|
void |
release()
Deprecated.
In 2.7, use
close() . |
protected boolean |
releaseSub(long timeout,
java.util.concurrent.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,
java.util.concurrent.TimeUnit timeUnit) |
void |
updateData(java.lang.Object data) |
protected static final Logger LOGGER
private static final java.util.Map<java.lang.String,AbstractManager> MAP
private static final java.util.concurrent.locks.Lock LOCK
protected int count
private final java.lang.String name
private final LoggerContext loggerContext
protected AbstractManager(LoggerContext loggerContext, java.lang.String name)
public void close()
close
in interface java.lang.AutoCloseable
public boolean stop(long timeout, java.util.concurrent.TimeUnit timeUnit)
public static <M extends AbstractManager,T> M getManager(java.lang.String name, ManagerFactory<M,T> factory, T data)
M
- The Type of the Manager to be created.T
- The type of the Factory data.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.public void updateData(java.lang.Object data)
public static boolean hasManager(java.lang.String name)
name
- The name of the Manager.protected static <M extends AbstractManager> M narrow(java.lang.Class<M> narrowClass, AbstractManager manager)
M
- the narrow typenarrowClass
- the type to cast tomanager
- the manager object to returnConfigurationException
- if the manager cannot be cast to the specified type, which only happens when
the configuration has multiple incompatible appenders pointing to the same resourceprotected boolean releaseSub(long timeout, java.util.concurrent.TimeUnit timeUnit)
timeout
- timeouttimeUnit
- timeout time unitprotected int getCount()
public LoggerContext getLoggerContext()
@Deprecated public void release()
close()
.public java.lang.String getName()
public java.util.Map<java.lang.String,java.lang.String> getContentFormat()
protected void log(Level level, java.lang.String message, java.lang.Throwable throwable)
protected void logDebug(java.lang.String message, java.lang.Throwable throwable)
protected void logError(java.lang.String message, java.lang.Throwable throwable)
protected void logWarn(java.lang.String message, java.lang.Throwable throwable)