# Class ClassLoaderLogManager

java.lang.Object
java.util.logging.LogManager
org.apache.juli.ClassLoaderLogManager

public class ClassLoaderLogManager extends LogManager
Per classloader LogManager implementation. For light debugging, set the system property `org.apache.juli.ClassLoaderLogManager.debug=true`. Short configuration information will be sent to `System.err`.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected static final class`
`ClassLoaderLogManager.ClassLoaderLogInfo`
Holds the logging configuration information for a specific class loader.
`protected static final class`
`ClassLoaderLogManager.LogNode`
Represents a node in the logger hierarchy tree.
`protected static class`
`ClassLoaderLogManager.RootLogger`
This class is needed to instantiate the root of each per classloader hierarchy.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final Map<ClassLoader, ClassLoaderLogManager.ClassLoaderLogInfo>`
`classLoaderLoggers`
Map containing the classloader information, keyed per classloader.
`static final String`
`DEBUG_PROPERTY`
System property name used to enable debug output.
`protected final ThreadLocal<String>`
`prefix`
This prefix is used to allow using prefixes for the properties names of handlers and their subcomponents.
`protected boolean`
`useShutdownHook`
Determines if the shutdown hook is used to perform any necessary clean-up such as flushing buffered handlers on JVM shutdown.

### Fields inherited from class LogManager

`LOGGING_MXBEAN_NAME`

## Constructor Summary

Constructors
Constructor
Description
`ClassLoaderLogManager()`
Creates a new ClassLoaderLogManager instance and registers a shutdown hook.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`addLogger(Logger logger)`
Add the specified logger to the classloader local configuration.
`protected ClassLoaderLogManager.ClassLoaderLogInfo`
`getClassLoaderInfo(ClassLoader classLoader)`
Retrieve the configuration associated with the specified classloader.
`Logger`
`getLogger(String name)`
Get the logger associated with the specified name inside the classloader local configuration.
`Enumeration<String>`
`getLoggerNames()`
Get an enumeration of the logger names currently defined in the classloader local configuration.
`String`
`getProperty(String name)`
Get the value of the specified property in the classloader local configuration.
`boolean`
`isUseShutdownHook()`
Returns whether the shutdown hook is used to perform clean-up on JVM shutdown.
`void`
`readConfiguration()`
`void`
`readConfiguration(InputStream is)`
`protected void`
`readConfiguration(InputStream is, ClassLoader classLoader)`
Load specified configuration.
`protected void`
`readConfiguration(ClassLoader classLoader)`
Read configuration for the specified classloader.
`protected String`
`replace(String str)`
System property replacement in the given string.
`void`
`reset()`
`void`
`setUseShutdownHook(boolean useShutdownHook)`
Sets whether the shutdown hook is used to perform clean-up on JVM shutdown.
`void`
`shutdown()`
Shuts down the logging system.

### Methods inherited from class LogManager

`addConfigurationListener, checkAccess, getLoggingMXBean, getLogManager, removeConfigurationListener, updateConfiguration, updateConfiguration`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DEBUG_PROPERTY

public static final String DEBUG_PROPERTY
System property name used to enable debug output.

### classLoaderLoggers

protected final Map<ClassLoader, ClassLoaderLogManager.ClassLoaderLogInfo> classLoaderLoggers
Map containing the classloader information, keyed per classloader. A weak hashmap is used to ensure no classloader reference is leaked from application redeployment.

### prefix

protected final ThreadLocal<String> prefix
This prefix is used to allow using prefixes for the properties names of handlers and their subcomponents.

### useShutdownHook

protected volatile boolean useShutdownHook
Determines if the shutdown hook is used to perform any necessary clean-up such as flushing buffered handlers on JVM shutdown. Defaults to `true` but may be set to false if another component ensures that `shutdown()` is called.

## Constructor Details

### ClassLoaderLogManager

public ClassLoaderLogManager()
Creates a new ClassLoaderLogManager instance and registers a shutdown hook.

## Method Details

### isUseShutdownHook

public boolean isUseShutdownHook()
Returns whether the shutdown hook is used to perform clean-up on JVM shutdown.

Returns:
  `true` if the shutdown hook is enabled

### setUseShutdownHook

public void setUseShutdownHook(boolean useShutdownHook)
Sets whether the shutdown hook is used to perform clean-up on JVM shutdown.

Parameters:
  `useShutdownHook` - `true` to enable the shutdown hook

### addLogger

public boolean addLogger(Logger logger)
Add the specified logger to the classloader local configuration.

Overrides:
  `addLogger` in class `LogManager`
Parameters:
  `logger` - The logger to be added

### getLogger

public Logger getLogger(String name)
Get the logger associated with the specified name inside the classloader local configuration. If this returns null, and the call originated for Logger.getLogger, a new logger with the specified name will be instantiated and added using addLogger.

Overrides:
  `getLogger` in class `LogManager`
Parameters:
  `name` - The name of the logger to retrieve

### getLoggerNames

public Enumeration<String> getLoggerNames()
Get an enumeration of the logger names currently defined in the classloader local configuration.

Overrides:
  `getLoggerNames` in class `LogManager`

### getProperty

public String getProperty(String name)
Get the value of the specified property in the classloader local configuration.

Overrides:
  `getProperty` in class `LogManager`
Parameters:
  `name` - The property name

### readConfiguration

public void readConfiguration() throws IOException, SecurityException

Overrides:
  `readConfiguration` in class `LogManager`
Throws:
  `IOException`
  `SecurityException`

### readConfiguration

public void readConfiguration(InputStream is) throws IOException, SecurityException

Overrides:
  `readConfiguration` in class `LogManager`
Throws:
  `IOException`
  `SecurityException`

### reset

public void reset() throws SecurityException

Overrides:
  `reset` in class `LogManager`
Throws:
  `SecurityException`

### shutdown

public void shutdown()
Shuts down the logging system.

### getClassLoaderInfo

protected ClassLoaderLogManager.ClassLoaderLogInfo getClassLoaderInfo(ClassLoader classLoader)
Retrieve the configuration associated with the specified classloader. If it does not exist, it will be created. If no class loader is specified, the class loader used to load this class is used.

Parameters:
  `classLoader` - The class loader for which we will retrieve or build the configuration
Returns:
  the log configuration

### readConfiguration

protected void readConfiguration(ClassLoader classLoader) throws IOException
Read configuration for the specified classloader.

Parameters:
  `classLoader` - The classloader
Throws:
  `IOException` - Error reading configuration

### readConfiguration

protected void readConfiguration(InputStream is, ClassLoader classLoader) throws IOException
Load specified configuration.

Parameters:
  `is` - InputStream to the properties file
  `classLoader` - for which the configuration will be loaded
Throws:
  `IOException` - If something wrong happens during loading

### replace

protected String replace(String str)
System property replacement in the given string.

Parameters:
  `str` - The original string
Returns:
  the modified string