Class LoggerRepositoryExImpl

java.lang.Object
org.apache.log4j.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 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 Details

    • 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 ArrayList<LoggerRepositoryEventListener> repositoryEventListeners
      List of repository event listeners.
    • loggerEventListeners

      Map of HierarchyEventListener keyed by LoggingEventListener.
    • name

      private String name
      Name of hierarchy.
    • pluginRegistry

      private PluginRegistry pluginRegistry
      Plug in registry.
    • properties

      private final Map<String,String> properties
      Properties.
    • scheduler

      private Scheduler scheduler
      Scheduler.
    • objectMap

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

      private List<ErrorItem> errorList
      Error list.
    • pristine

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

    • LoggerRepositoryExImpl

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

    • addLoggerRepositoryEventListener

      public void addLoggerRepositoryEventListener(LoggerRepositoryEventListener listener)
      Add a LoggerRepositoryEventListener to the repository. The listener will be called when repository events occur.
      Specified by:
      addLoggerRepositoryEventListener in interface LoggerRepositoryEx
      Parameters:
      listener - listener
    • removeLoggerRepositoryEventListener

      public void removeLoggerRepositoryEventListener(LoggerRepositoryEventListener listener)
      Remove a LoggerRepositoryEventListener from the repository.
      Specified by:
      removeLoggerRepositoryEventListener in interface LoggerRepositoryEx
      Parameters:
      listener - listener
    • addLoggerEventListener

      public void addLoggerEventListener(LoggerEventListener listener)
      Add a LoggerEventListener to the repository. The listener will be called when repository events occur.
      Specified by:
      addLoggerEventListener in interface LoggerRepositoryEx
      Parameters:
      listener - listener
    • 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
    • removeLoggerEventListener

      public void removeLoggerEventListener(LoggerEventListener listener)
      Remove a LoggerEventListener from the repository.
      Specified by:
      removeLoggerEventListener in interface LoggerRepositoryEx
      Parameters:
      listener - listener to be removed
    • 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(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 String getName()
      Return the name of this hierarchy.
      Specified by:
      getName in interface LoggerRepositoryEx
      Returns:
      name of hierarchy
    • setName

      public void setName(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 Map<String,String> getProperties()
      Get the properties specific for this repository.
      Specified by:
      getProperties in interface LoggerRepositoryEx
      Returns:
      property map.
    • getProperty

      public String getProperty(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(String key, 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(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.
    • getPluginRegistry

      public PluginRegistry getPluginRegistry()
      Return the PluginRegisty for this LoggerRepository.
      Specified by:
      getPluginRegistry in interface LoggerRepositoryEx
      Returns:
      plug in registry.
    • 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.
    • fireConfigurationChangedEvent

      public void fireConfigurationChangedEvent()
      Requests that a configuration changed event be sent to any registered LoggerRepositoryEventListener.
      Specified by:
      fireConfigurationChangedEvent in interface LoggerRepositoryEx
    • 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(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(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 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
    • getErrorList

      public List<ErrorItem> getErrorList()
      Return the the list of previously encoutered error items.
      Specified by:
      getErrorList in interface LoggerRepositoryEx
      Returns:
      list of errors
    • 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 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(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.
    • setPristine

      public void setPristine(boolean state)
      Set the pristine flag.
      Specified by:
      setPristine in interface LoggerRepositoryEx
      Parameters:
      state - state
      See Also:
    • 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(String key, 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 Object getObject(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(Element element, Properties props) throws Exception
      Specified by:
      parseUnrecognizedElement in interface org.apache.log4j.xml.UnrecognizedElementHandler
      Throws:
      Exception