Class 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 a null classloader will be the class loader used.
    • 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 to true this selector recursively searches the class loader parents until a match is found or a null parent is found.

        Parameters:
        defaultSelector - the selector to consult if no matching log context is found
        checkParentClassLoaders - true if the log context could not found for the class loader and the parent 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 to true this selector recursively searches the class loader parents until a match is found or a null parent is found.

        Parameters:
        checkParentClassLoaders - true if the log context could not found for the class loader and the parent 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 interface LogContextSelector
        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, or false 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, or false if it was not known to this selector
      • unregisterLogContext

        public boolean unregisterLogContext​(ClassLoader classLoader,
                                            LogContext logContext)
        Unregister a class loader/log context association. This method requires the unregisterLogContext RuntimePermission.
        Parameters:
        classLoader - the classloader
        logContext - the log context
        Returns:
        true if the association exists and was removed, false otherwise