Class LoggerContext

    • Field Detail

      • PROPERTY_CONFIG

        public static final String PROPERTY_CONFIG
        Property name of the property change event fired if the configuration is changed.
        See Also:
        Constant Field Values
    • Constructor Detail

      • LoggerContext

        public LoggerContext​(String name)
        Constructor taking only a name.
        Parameters:
        name - The context name.
      • LoggerContext

        public LoggerContext​(String name,
                             Object externalContext)
        Constructor taking a name and a reference to an external context.
        Parameters:
        name - The context name.
        externalContext - The external context.
      • LoggerContext

        public LoggerContext​(String name,
                             Object externalContext,
                             URI configLocn)
        Constructor taking a name, external context and a configuration URI.
        Parameters:
        name - The context name.
        externalContext - The external context.
        configLocn - The location of the configuration as a URI.
      • LoggerContext

        public LoggerContext​(String name,
                             Object externalContext,
                             String configLocn)
        Constructor taking a name external context and a configuration location String. The location must be resolvable to a File.
        Parameters:
        name - The configuration location.
        externalContext - The external context.
        configLocn - The configuration location.
    • Method Detail

      • getContext

        public static LoggerContext getContext()
        Returns the current LoggerContext.

        Avoids the type cast for:

         (LoggerContext) LogManager.getContext();
         

        WARNING - The LoggerContext returned by this method may not be the LoggerContext used to create a Logger for the calling class.

        Returns:
        The current LoggerContext.
        See Also:
        LogManager.getContext()
      • getContext

        public static LoggerContext getContext​(boolean currentContext)
        Returns a LoggerContext.

        Avoids the type cast for:

         (LoggerContext) LogManager.getContext(currentContext);
         
        Parameters:
        currentContext - if false the LoggerContext appropriate for the caller of this method is returned. For example, in a web application if the caller is a class in WEB-INF/lib then one LoggerContext may be returned and if the caller is a class in the container's classpath then a different LoggerContext may be returned. If true then only a single LoggerContext will be returned.
        Returns:
        a LoggerContext.
        See Also:
        LogManager.getContext(boolean)
      • getContext

        public static LoggerContext getContext​(ClassLoader loader,
                                               boolean currentContext,
                                               URI configLocation)
        Returns a LoggerContext.

        Avoids the type cast for:

         (LoggerContext) LogManager.getContext(loader, currentContext, configLocation);
         
        Parameters:
        loader - The ClassLoader for the context. If null the context will attempt to determine the appropriate ClassLoader.
        currentContext - if false the LoggerContext appropriate for the caller of this method is returned. For example, in a web application if the caller is a class in WEB-INF/lib then one LoggerContext may be returned and if the caller is a class in the container's classpath then a different LoggerContext may be returned. If true then only a single LoggerContext will be returned.
        configLocation - The URI for the configuration to use.
        Returns:
        a LoggerContext.
        See Also:
        LogManager.getContext(ClassLoader, boolean, URI)
      • start

        public void start​(Configuration config)
        Starts with a specific configuration.
        Parameters:
        config - The new Configuration.
      • terminate

        public void terminate()
        Description copied from interface: Terminable
        Requests that the logging implementation shut down. This call is synchronous and will block until shut down is complete. This may include flushing pending log events over network connections.
        Specified by:
        terminate in interface Terminable
      • stop

        public boolean stop​(long timeout,
                            TimeUnit timeUnit)
        Blocks until all Log4j tasks have completed execution after a shutdown request and all appenders have shut down, or the timeout occurs, or the current thread is interrupted, whichever happens first.

        Not all appenders will honor this, it is a hint and not an absolute guarantee that the this method not block longer. Setting timeout too low increase the risk of losing outstanding log events not yet written to the final destination.

        Log4j can start threads to perform certain actions like file rollovers, calling this method with a positive timeout will block until the rollover thread is done.

        Specified by:
        stop in interface LifeCycle2
        Overrides:
        stop in class AbstractLifeCycle
        Parameters:
        timeout - the maximum time to wait, or 0 which mean that each apppender uses its default timeout, and don't wait for background tasks
        timeUnit - the time unit of the timeout argument
        Returns:
        true if the logger context terminated and false if the timeout elapsed before termination.
        Since:
        2.7
      • getName

        public String getName()
        Gets the name.
        Returns:
        the name.
      • getRootLogger

        public Logger getRootLogger()
        Gets the root logger.
        Returns:
        the root logger.
      • setName

        public void setName​(String name)
        Sets the name.
        Parameters:
        name - the new LoggerContext name
        Throws:
        NullPointerException - if the specified name is null
      • putObject

        public Object putObject​(String key,
                                Object value)
        Description copied from interface: LoggerContext
        Store an object into the LoggerContext by name for later use.
        Specified by:
        putObject in interface LoggerContext
        Parameters:
        key - The object's key.
        value - The object.
        Returns:
        The previous object or null.
      • putObjectIfAbsent

        public Object putObjectIfAbsent​(String key,
                                        Object value)
        Description copied from interface: LoggerContext
        Store an object into the LoggerContext by name for later use if an object is not already stored with that key.
        Specified by:
        putObjectIfAbsent in interface LoggerContext
        Parameters:
        key - The object's key.
        value - The object.
        Returns:
        The previous object or null.
      • removeObject

        public Object removeObject​(String key)
        Description copied from interface: LoggerContext
        Remove an object if it is present.
        Specified by:
        removeObject in interface LoggerContext
        Parameters:
        key - The object's key.
        Returns:
        The object if it was present, null if it was not.
      • removeObject

        public boolean removeObject​(String key,
                                    Object value)
        Description copied from interface: LoggerContext
        Remove an object if it is present and the provided object is stored.
        Specified by:
        removeObject in interface LoggerContext
        Parameters:
        key - The object's key.
        value - The object.
        Returns:
        The object if it was present, null if it was not.
      • setExternalContext

        public void setExternalContext​(Object context)
        Sets the external context.
        Parameters:
        context - The external context.
      • getLogger

        public Logger getLogger​(String name)
        Gets a Logger from the Context.
        Specified by:
        getLogger in interface LoggerContext
        Parameters:
        name - The name of the Logger to return.
        Returns:
        The Logger.
      • getLoggers

        public Collection<Logger> getLoggers()
        Gets a collection of the current loggers.

        Whether this collection is a copy of the underlying collection or not is undefined. Therefore, modify this collection at your own risk.

        Returns:
        a collection of the current loggers.
      • getLogger

        public Logger getLogger​(String name,
                                MessageFactory messageFactory)
        Obtains a Logger from the Context.
        Specified by:
        getLogger in interface LoggerContext
        Parameters:
        name - The name of the Logger to return.
        messageFactory - The message factory is used only when creating a logger, subsequent use does not change the logger but will log a warning if mismatched.
        Returns:
        The Logger.
      • hasLogger

        public boolean hasLogger​(String name)
        Determines if the specified Logger exists.
        Specified by:
        hasLogger in interface LoggerContext
        Parameters:
        name - The Logger name to search for.
        Returns:
        True if the Logger exists, false otherwise.
      • hasLogger

        public boolean hasLogger​(String name,
                                 MessageFactory messageFactory)
        Determines if the specified Logger exists.
        Specified by:
        hasLogger in interface LoggerContext
        Parameters:
        name - The Logger name to search for.
        messageFactory - The message factory to search for.
        Returns:
        True if the Logger exists, false otherwise.
      • hasLogger

        public boolean hasLogger​(String name,
                                 Class<? extends MessageFactory> messageFactoryClass)
        Determines if the specified Logger exists.
        Specified by:
        hasLogger in interface LoggerContext
        Parameters:
        name - The Logger name to search for.
        messageFactoryClass - The message factory class to search for.
        Returns:
        True if the Logger exists, false otherwise.
      • getConfiguration

        public Configuration getConfiguration()
        Returns the current Configuration. The Configuration will be replaced when a reconfigure occurs.
        Returns:
        The current Configuration, never null, but may be NullConfiguration.
      • addFilter

        public void addFilter​(Filter filter)
        Adds a Filter to the Configuration. Filters that are added through the API will be lost when a reconfigure occurs.
        Parameters:
        filter - The Filter to add.
      • removeFilter

        public void removeFilter​(Filter filter)
        Removes a Filter from the current Configuration.
        Parameters:
        filter - The Filter to remove.
      • setConfiguration

        public Configuration setConfiguration​(Configuration config)
        Sets the Configuration to be used.
        Parameters:
        config - The new Configuration.
        Returns:
        The previous Configuration.
      • removePropertyChangeListener

        public void removePropertyChangeListener​(PropertyChangeListener listener)
      • getConfigLocation

        public URI getConfigLocation()
        Returns the initial configuration location or null. The returned value may not be the location of the current configuration. Use getConfiguration().getConfigurationSource().getLocation() to get the actual source of the current configuration.
        Returns:
        the initial configuration location or null
      • setConfigLocation

        public void setConfigLocation​(URI configLocation)
        Sets the configLocation to the specified value and reconfigures this context.
        Parameters:
        configLocation - the location of the new configuration
      • reconfigure

        public void reconfigure()
        Reconfigures the context. Log4j does not remove Loggers during a reconfiguration. Log4j will create new LoggerConfig objects and Log4j will point the Loggers at the new LoggerConfigs. Log4j will free the old LoggerConfig, along with old Appenders and Filters.
      • reconfigure

        public void reconfigure​(Configuration configuration)
      • updateLoggers

        public void updateLoggers()
        Causes all Loggers to be updated against the current Configuration.
      • updateLoggers

        public void updateLoggers​(Configuration config)
        Causes all Logger to be updated against the specified Configuration.
        Parameters:
        config - The Configuration.
      • onChange

        public void onChange​(Reconfigurable reconfigurable)
        Causes a reconfiguration to take place when the underlying configuration file changes.
        Specified by:
        onChange in interface ConfigurationListener
        Parameters:
        reconfigurable - The Configuration that can be reconfigured.