org.apache.logging.log4j.core.selector
Class ClassLoaderContextSelector

java.lang.Object
  extended by org.apache.logging.log4j.core.selector.ClassLoaderContextSelector
All Implemented Interfaces:
ContextSelector
Direct Known Subclasses:
BundleContextSelector

public class ClassLoaderContextSelector
extends Object
implements ContextSelector

This ContextSelector chooses a LoggerContext based upon the ClassLoader of the caller. This allows Loggers assigned to static variables to be released along with the classes that own then. Other ContextSelectors will generally cause Loggers associated with classes loaded from different ClassLoaders to be co-mingled. This is a problem if, for example, a web application is undeployed as some of the Loggers being released may be associated with a Class in a parent ClassLoader, which will generally have negative consequences. The main downside to this ContextSelector is that Configuration is more challenging. This ContextSelector should not be used with a Servlet Filter such as the Log4jServletFilter.


Field Summary
protected static ConcurrentMap<String,AtomicReference<WeakReference<LoggerContext>>> CONTEXT_MAP
           
protected static org.apache.logging.log4j.status.StatusLogger LOGGER
           
 
Constructor Summary
ClassLoaderContextSelector()
           
 
Method Summary
 LoggerContext getContext(String fqcn, ClassLoader loader, boolean currentContext)
          Returns the LoggerContext.
 LoggerContext getContext(String fqcn, ClassLoader loader, boolean currentContext, URI configLocation)
          Returns the LoggerContext.
protected  LoggerContext getDefault()
           
 List<LoggerContext> getLoggerContexts()
          Returns a List of all the available LoggerContexts.
 void removeContext(LoggerContext context)
          Remove any references to the LoggerContext.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGER

protected static final org.apache.logging.log4j.status.StatusLogger LOGGER

CONTEXT_MAP

protected static final ConcurrentMap<String,AtomicReference<WeakReference<LoggerContext>>> CONTEXT_MAP
Constructor Detail

ClassLoaderContextSelector

public ClassLoaderContextSelector()
Method Detail

getContext

public LoggerContext getContext(String fqcn,
                                ClassLoader loader,
                                boolean currentContext)
Description copied from interface: ContextSelector
Returns the LoggerContext.

Specified by:
getContext in interface ContextSelector
Parameters:
fqcn - The fully qualified class name of the caller.
loader - ClassLoader to use or null.
currentContext - If true returns the current Context, if false returns the Context appropriate for the caller if a more appropriate Context can be determined.
Returns:
The LoggerContext.

getContext

public LoggerContext getContext(String fqcn,
                                ClassLoader loader,
                                boolean currentContext,
                                URI configLocation)
Description copied from interface: ContextSelector
Returns the LoggerContext.

Specified by:
getContext in interface ContextSelector
Parameters:
fqcn - The fully qualified class name of the caller.
loader - ClassLoader to use or null.
currentContext - If true returns the current Context, if false returns the Context appropriate for the caller if a more appropriate Context can be determined.
configLocation - The location of the configuration for the LoggerContext.
Returns:
The LoggerContext.

removeContext

public void removeContext(LoggerContext context)
Description copied from interface: ContextSelector
Remove any references to the LoggerContext.

Specified by:
removeContext in interface ContextSelector
Parameters:
context - The context to remove.

getLoggerContexts

public List<LoggerContext> getLoggerContexts()
Description copied from interface: ContextSelector
Returns a List of all the available LoggerContexts.

Specified by:
getLoggerContexts in interface ContextSelector
Returns:
The List of LoggerContexts.

getDefault

protected LoggerContext getDefault()


Copyright © 1999-2014 Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.