org.apache.juli

## 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
`protected static class` `ClassLoaderLogManager.ClassLoaderLogInfo`
`protected static class` `ClassLoaderLogManager.LogNode`
`protected static class` `ClassLoaderLogManager.RootLogger` This class is needed to instantiate the root of each per classloader hierarchy.

### Field Summary

Fields
`protected Map<ClassLoader,ClassLoaderLogManager.ClassLoaderLogInfo>` `classLoaderLoggers` Map containing the classloader information, keyed per classloader.
`static String` `DEBUG_PROPERTY`
`protected 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 java.util.logging.LogManager

`LOGGING_MXBEAN_NAME`

### Constructor Summary

Constructors
Constructor and Description
`ClassLoaderLogManager()`

### Method Summary

Methods
`boolean` `addLogger(Logger logger)` Add the specified logger to the classloader local configuration.
`protected static void` `doSetParentLogger(Logger logger, Logger parent)` Set parent child relationship between the two specified loggers.
`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()`
`void` `readConfiguration()`
`protected void` `readConfiguration(ClassLoader classLoader)` Read configuration for the specified classloader.
`void` `readConfiguration(InputStream is)`
`protected void` `readConfiguration(InputStream is, ClassLoader classLoader)` Load specified configuration.
`protected String` `replace(String str)` System property replacement in the given string.
`void` `reset()`
`void` `setUseShutdownHook(boolean useShutdownHook)`
`void` `shutdown()` Shuts down the logging system.

### Methods inherited from class java.util.logging.LogManager

`addPropertyChangeListener, checkAccess, getLoggingMXBean, getLogManager, removePropertyChangeListener`

### Methods inherited from class java.lang.Object

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

### Field Detail

#### DEBUG_PROPERTY

    public static final String DEBUG_PROPERTY

#### 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 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 Detail

#### ClassLoaderLogManager

    public ClassLoaderLogManager()

### Method Detail

#### isUseShutdownHook

    public boolean isUseShutdownHook()

#### setUseShutdownHook

    public void setUseShutdownHook(boolean useShutdownHook)

#### 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.

Parameters:
  `classLoader` - The classloader for which we will retrieve or build the configuration

#### readConfiguration

    protected void readConfiguration(ClassLoader classLoader)
                              throws IOException

Read configuration for the specified classloader.

Parameters:
  `classLoader` -
Throws:
  `IOException` - Error

#### 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

#### doSetParentLogger

    protected static void doSetParentLogger(Logger logger,
                         Logger parent)

Set parent child relationship between the two specified loggers.

Parameters:
  `logger` -
  `parent` -

#### replace

    protected String replace(String str)

System property replacement in the given string.

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