Class LoggerRepositoryExImpl

  • All Implemented Interfaces:
    org.apache.log4j.spi.LoggerRepository, LoggerRepositoryEx, org.apache.log4j.spi.RendererSupport, org.apache.log4j.xml.UnrecognizedElementHandler

    public final class LoggerRepositoryExImpl
    extends java.lang.Object
    implements LoggerRepositoryEx, org.apache.log4j.spi.RendererSupport, org.apache.log4j.xml.UnrecognizedElementHandler
    This class implements LoggerRepositoryEx by wrapping an existing LoggerRepository implementation and implementing the newly added capabilities.
    • Field Detail

      • repo

        private final org.apache.log4j.spi.LoggerRepository repo
        Wrapped logger repository.
      • loggerFactory

        private org.apache.log4j.spi.LoggerFactory loggerFactory
        Logger factory. Does not affect class of logger created by underlying repository.
      • rendererSupport

        private final org.apache.log4j.spi.RendererSupport rendererSupport
        Renderer support.
      • repositoryEventListeners

        private final java.util.ArrayList<LoggerRepositoryEventListener> repositoryEventListeners
        List of repository event listeners.
      • name

        private java.lang.String name
        Name of hierarchy.
      • pluginRegistry

        private PluginRegistry pluginRegistry
        Plug in registry.
      • properties

        private final java.util.Map<java.lang.String,​java.lang.String> properties
        Properties.
      • scheduler

        private Scheduler scheduler
        Scheduler.
      • objectMap

        private java.util.Map<java.lang.String,​java.lang.Object> objectMap
        The repository can also be used as an object store for various objects used by log4j components.
      • errorList

        private java.util.List<ErrorItem> errorList
        Error list.
      • pristine

        private boolean pristine
        True if hierarchy has not been modified.
    • Constructor Detail

      • LoggerRepositoryExImpl

        public LoggerRepositoryExImpl​(org.apache.log4j.spi.LoggerRepository repository)
        Constructs a new logger hierarchy.
        Parameters:
        repository - Base implementation of repository.
    • Method Detail

      • addHierarchyEventListener

        public void addHierarchyEventListener​(org.apache.log4j.spi.HierarchyEventListener listener)
        Deprecated.
        Superceded by addLoggerEventListener
        Add a HierarchyEventListener event to the repository.
        Specified by:
        addHierarchyEventListener in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        listener - listener
      • emitNoAppenderWarning

        public void emitNoAppenderWarning​(org.apache.log4j.Category cat)
        Issue warning that there are no appenders in hierarchy.
        Specified by:
        emitNoAppenderWarning in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        cat - logger, not currently used.
      • exists

        public org.apache.log4j.Logger exists​(java.lang.String loggerName)
        Check if the named logger exists in the hierarchy. If so return its reference, otherwise returns null.
        Specified by:
        exists in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        loggerName - The name of the logger to search for.
        Returns:
        true if logger exists.
      • getName

        public java.lang.String getName()
        Return the name of this hierarchy.
        Specified by:
        getName in interface LoggerRepositoryEx
        Returns:
        name of hierarchy
      • setName

        public void setName​(java.lang.String repoName)
        Set the name of this repository.

        Note that once named, a repository cannot be rerenamed.

        Specified by:
        setName in interface LoggerRepositoryEx
        Parameters:
        repoName - name of hierarchy
      • getProperties

        public java.util.Map<java.lang.String,​java.lang.String> getProperties()
        Get the properties specific for this repository.
        Specified by:
        getProperties in interface LoggerRepositoryEx
        Returns:
        property map.
      • getProperty

        public java.lang.String getProperty​(java.lang.String key)
        Get the property of this repository.
        Specified by:
        getProperty in interface LoggerRepositoryEx
        Parameters:
        key - property key.
        Returns:
        key value or null if not set.
      • setProperty

        public void setProperty​(java.lang.String key,
                                java.lang.String value)
        Set a property by key and value. The property will be shared by all events in this repository.
        Specified by:
        setProperty in interface LoggerRepositoryEx
        Parameters:
        key - property name
        value - property value
      • setThreshold

        public void setThreshold​(java.lang.String levelStr)
        The string form of setThreshold(Level).
        Specified by:
        setThreshold in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        levelStr - symbolic name for level
      • setThreshold

        public void setThreshold​(org.apache.log4j.Level l)
        Enable logging for logging requests with level l or higher. By default all levels are enabled.
        Specified by:
        setThreshold in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        l - The minimum level for which logging requests are sent to their appenders.
      • fireAddAppenderEvent

        public void fireAddAppenderEvent​(org.apache.log4j.Category logger,
                                         org.apache.log4j.Appender appender)
        Requests that a appender added event be sent to any registered LoggerEventListener.
        Specified by:
        fireAddAppenderEvent in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        logger - The logger to which the appender was added.
        appender - The appender added to the logger.
      • fireRemoveAppenderEvent

        public void fireRemoveAppenderEvent​(org.apache.log4j.Category logger,
                                            org.apache.log4j.Appender appender)
        Requests that a appender removed event be sent to any registered LoggerEventListener.
        Specified by:
        fireRemoveAppenderEvent in interface LoggerRepositoryEx
        Parameters:
        logger - The logger from which the appender was removed.
        appender - The appender removed from the logger.
      • fireLevelChangedEvent

        public void fireLevelChangedEvent​(org.apache.log4j.Logger logger)
        Requests that a level changed event be sent to any registered LoggerEventListener.
        Specified by:
        fireLevelChangedEvent in interface LoggerRepositoryEx
        Parameters:
        logger - The logger which changed levels.
      • getThreshold

        public org.apache.log4j.Level getThreshold()
        Returns the current threshold.
        Specified by:
        getThreshold in interface org.apache.log4j.spi.LoggerRepository
        Returns:
        current threshold level
        Since:
        1.2
      • getLogger

        public org.apache.log4j.Logger getLogger​(java.lang.String loggerName)
        Return a new logger instance named as the first parameter using the default factory.

        If a logger of that name already exists, then it will be returned. Otherwise, a new logger will be instantiated and then linked with its existing ancestors as well as children.

        Specified by:
        getLogger in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        loggerName - The name of the logger to retrieve.
        Returns:
        logger
      • getLogger

        public org.apache.log4j.Logger getLogger​(java.lang.String loggerName,
                                                 org.apache.log4j.spi.LoggerFactory factory)
        Return a new logger instance named as the first parameter using factory.

        If a logger of that name already exists, then it will be returned. Otherwise, a new logger will be instantiated by the factory parameter and linked with its existing ancestors as well as children.

        Specified by:
        getLogger in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        loggerName - The name of the logger to retrieve.
        factory - The factory that will make the new logger instance.
        Returns:
        logger
      • getCurrentLoggers

        public java.util.Enumeration getCurrentLoggers()
        Returns all the currently defined categories in this hierarchy as an Enumeration.

        The root logger is not included in the returned Enumeration.

        Specified by:
        getCurrentLoggers in interface org.apache.log4j.spi.LoggerRepository
        Returns:
        enumerator of current loggers
      • addErrorItem

        public void addErrorItem​(ErrorItem errorItem)
        Add an error item to the list of previously encountered errors.
        Specified by:
        addErrorItem in interface LoggerRepositoryEx
        Parameters:
        errorItem - error to add to list of errors.
      • getCurrentCategories

        public java.util.Enumeration getCurrentCategories()
        Deprecated.
        Please use getCurrentLoggers() instead.
        Get enumerator over current loggers.
        Specified by:
        getCurrentCategories in interface org.apache.log4j.spi.LoggerRepository
        Returns:
        enumerator over current loggers
      • getRendererMap

        public org.apache.log4j.or.RendererMap getRendererMap()
        Get the renderer map for this hierarchy.
        Specified by:
        getRendererMap in interface org.apache.log4j.spi.RendererSupport
        Returns:
        renderer map
      • getRootLogger

        public org.apache.log4j.Logger getRootLogger()
        Get the root of this hierarchy.
        Specified by:
        getRootLogger in interface org.apache.log4j.spi.LoggerRepository
        Returns:
        root of hierarchy
        Since:
        0.9.0
      • isDisabled

        public boolean isDisabled​(int level)
        This method will return true if this repository is disabled for level value passed as parameter and false otherwise. See also the threshold method.
        Specified by:
        isDisabled in interface org.apache.log4j.spi.LoggerRepository
        Parameters:
        level - numeric value for level.
        Returns:
        true if disabled for specified level
      • resetConfiguration

        public void resetConfiguration()
        Reset all values contained in this hierarchy instance to their default. This removes all appenders from all categories, sets the level of all non-root categories to null, sets their additivity flag to true and sets the level of the root logger to DEBUG. Moreover, message disabling is set its default "off" value.

        Existing categories are not removed. They are just reset.

        This method should be used sparingly and with care as it will block all logging until it is completed.

        Specified by:
        resetConfiguration in interface org.apache.log4j.spi.LoggerRepository
        Since:
        0.8.5
      • setRenderer

        public void setRenderer​(java.lang.Class renderedClass,
                                org.apache.log4j.or.ObjectRenderer renderer)
        Used by subclasses to add a renderer to the hierarchy passed as parameter.
        Specified by:
        setRenderer in interface org.apache.log4j.spi.RendererSupport
        Parameters:
        renderedClass - class
        renderer - object used to render class.
      • isPristine

        public boolean isPristine()
        Is the current configuration of the repository in its original (pristine) state?
        Specified by:
        isPristine in interface LoggerRepositoryEx
        Returns:
        true if repository is in original state.
      • shutdown

        public void shutdown()
        Shutting down a hierarchy will safely close and remove all appenders in all categories including the root logger.

        Some appenders such as org.apache.log4j.net.SocketAppender and AsyncAppender need to be closed before the application exists. Otherwise, pending logging events might be lost.

        The shutdown method is careful to close nested appenders before closing regular appenders. This is allows configurations where a regular appender is attached to a logger and again to a nested appender.

        Specified by:
        shutdown in interface org.apache.log4j.spi.LoggerRepository
        Since:
        1.0
      • getScheduler

        public Scheduler getScheduler()
        Return this repository's own scheduler. The scheduler is lazily instantiated.
        Specified by:
        getScheduler in interface LoggerRepositoryEx
        Returns:
        this repository's own scheduler.
      • putObject

        public void putObject​(java.lang.String key,
                              java.lang.Object value)
        Puts object by key.
        Specified by:
        putObject in interface LoggerRepositoryEx
        Parameters:
        key - key, may not be null.
        value - object to associate with key.
      • getObject

        public java.lang.Object getObject​(java.lang.String key)
        Get object by key.
        Specified by:
        getObject in interface LoggerRepositoryEx
        Parameters:
        key - key, may not be null.
        Returns:
        object associated with key or null.
      • setLoggerFactory

        public void setLoggerFactory​(org.apache.log4j.spi.LoggerFactory factory)
        Set logger factory.
        Specified by:
        setLoggerFactory in interface LoggerRepositoryEx
        Parameters:
        factory - logger factory.
      • getLoggerFactory

        public org.apache.log4j.spi.LoggerFactory getLoggerFactory()
        Get logger factory.
        Specified by:
        getLoggerFactory in interface LoggerRepositoryEx
        Returns:
        logger factory.
      • parseUnrecognizedElement

        public boolean parseUnrecognizedElement​(org.w3c.dom.Element element,
                                                java.util.Properties props)
                                         throws java.lang.Exception
        Specified by:
        parseUnrecognizedElement in interface org.apache.log4j.xml.UnrecognizedElementHandler
        Throws:
        java.lang.Exception