Package org.jboss.logmanager
Class CallerClassLoaderLogContextSelector
- java.lang.Object
-
- org.jboss.logmanager.CallerClassLoaderLogContextSelector
-
- All Implemented Interfaces:
LogContextSelector
public final class CallerClassLoaderLogContextSelector extends Object implements LogContextSelector
A log context selector which chooses a log context based on the caller's classloader. The first caller that is not a log API or does not have anull
classloader will be the class loader used.
-
-
Constructor Summary
Constructors Constructor Description CallerClassLoaderLogContextSelector()
Construct a new instance.CallerClassLoaderLogContextSelector(boolean checkParentClassLoaders)
Construct a new instance.CallerClassLoaderLogContextSelector(LogContextSelector defaultSelector)
Construct a new instance.CallerClassLoaderLogContextSelector(LogContextSelector defaultSelector, boolean checkParentClassLoaders)
Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addLogApiClassLoader(ClassLoader apiClassLoader)
Register a class loader which is a known log API, and thus should be skipped over when searching for the log context to use for the caller class.LogContext
getLogContext()
Get the current log context.void
registerLogContext(ClassLoader classLoader, LogContext logContext)
Register a class loader with a log context.boolean
removeLogApiClassLoader(ClassLoader apiClassLoader)
Remove a class loader from the known log APIs set.boolean
unregisterLogContext(ClassLoader classLoader, LogContext logContext)
Unregister a class loader/log context association.
-
-
-
Constructor Detail
-
CallerClassLoaderLogContextSelector
public CallerClassLoaderLogContextSelector(LogContextSelector defaultSelector)
Construct a new instance. If no matching log context is found, the provided default selector is consulted.- Parameters:
defaultSelector
- the selector to consult if no matching log context is found
-
CallerClassLoaderLogContextSelector
public CallerClassLoaderLogContextSelector(LogContextSelector defaultSelector, boolean checkParentClassLoaders)
Construct a new instance. If no matching log context is found, the provided default selector is consulted.If the
checkParentClassLoaders
is set totrue
this selector recursively searches the class loader parents until a match is found or anull
parent is found.- Parameters:
defaultSelector
- the selector to consult if no matching log context is foundcheckParentClassLoaders
-true
if thelog context
could not found for the class loader and theparent class loader
should be checked
-
CallerClassLoaderLogContextSelector
public CallerClassLoaderLogContextSelector()
Construct a new instance. If no matching log context is found, the system context is used.
-
CallerClassLoaderLogContextSelector
public CallerClassLoaderLogContextSelector(boolean checkParentClassLoaders)
Construct a new instance. If no matching log context is found, the system context is used.If the
checkParentClassLoaders
is set totrue
this selector recursively searches the class loader parents until a match is found or anull
parent is found.- Parameters:
checkParentClassLoaders
-true
if thelog context
could not found for the class loader and theparent class loader
should be checked
-
-
Method Detail
-
getLogContext
public LogContext getLogContext()
Get the current log context. This instance will consult the call stack to see if the first callers classloader is associated with a log context. The first caller is determined by the first class loader that is not registered as a log API.- Specified by:
getLogContext
in interfaceLogContextSelector
- Returns:
- the current log context
-
addLogApiClassLoader
public boolean addLogApiClassLoader(ClassLoader apiClassLoader)
Register a class loader which is a known log API, and thus should be skipped over when searching for the log context to use for the caller class.- Parameters:
apiClassLoader
- the API class loader- Returns:
true
if this class loader was previously unknown, orfalse
if it was already registered
-
removeLogApiClassLoader
public boolean removeLogApiClassLoader(ClassLoader apiClassLoader)
Remove a class loader from the known log APIs set.- Parameters:
apiClassLoader
- the API class loader- Returns:
true
if the class loader was removed, orfalse
if it was not known to this selector
-
registerLogContext
public void registerLogContext(ClassLoader classLoader, LogContext logContext) throws IllegalArgumentException
Register a class loader with a log context. This method requires theregisterLogContext
RuntimePermission
.- Parameters:
classLoader
- the classloaderlogContext
- the log context- Throws:
IllegalArgumentException
- if the classloader is already associated with a log context
-
unregisterLogContext
public boolean unregisterLogContext(ClassLoader classLoader, LogContext logContext)
Unregister a class loader/log context association. This method requires theunregisterLogContext
RuntimePermission
.- Parameters:
classLoader
- the classloaderlogContext
- the log context- Returns:
true
if the association exists and was removed,false
otherwise
-
-