Class AbstractConfiguration

All Implemented Interfaces:
Configuration, Filterable, LifeCycle, LifeCycle2
Direct Known Subclasses:
BuiltConfiguration, CompositeConfiguration, DefaultConfiguration, JsonConfiguration, NullConfiguration, XmlConfiguration

public abstract class AbstractConfiguration extends AbstractFilterable implements Configuration
The base Configuration. Many configuration implementations will extend this class.
  • Field Details

    • rootNode

      protected Node rootNode
      The root node of the configuration.
    • listeners

      protected final List<ConfigurationListener> listeners
      Listeners for configuration changes.
    • pluginPackages

      protected final List<String> pluginPackages
      Packages found in configuration "packages" attribute.
    • pluginManager

      protected PluginManager pluginManager
      The plugin manager.
    • isShutdownHookEnabled

      protected boolean isShutdownHookEnabled
      Shutdown hook is enabled by default.
    • shutdownTimeoutMillis

      protected long shutdownTimeoutMillis
      Shutdown timeout in milliseconds.
    • scriptManager

      protected ScriptManager scriptManager
      The Script manager.
  • Constructor Details

  • Method Details

    • getConfigurationSource

      public ConfigurationSource getConfigurationSource()
      Description copied from interface: Configuration
      Returns the source of this configuration.
      Specified by:
      getConfigurationSource in interface Configuration
      Returns:
      the source of this configuration, never null, but may be ConfigurationSource.NULL_SOURCE or ConfigurationSource.COMPOSITE_SOURCE
    • getPluginPackages

      public List<String> getPluginPackages()
      Description copied from interface: Configuration
      Returns the list of packages to scan for plugins for this Configuration.
      Specified by:
      getPluginPackages in interface Configuration
      Returns:
      the list of plugin packages.
    • getProperties

      public Map<String,String> getProperties()
      Specified by:
      getProperties in interface Configuration
    • getScriptManager

      public ScriptManager getScriptManager()
      Specified by:
      getScriptManager in interface Configuration
    • setScriptManager

      public void setScriptManager(ScriptManager scriptManager)
    • getPluginManager

      public PluginManager getPluginManager()
    • setPluginManager

      public void setPluginManager(PluginManager pluginManager)
    • getWatchManager

      public WatchManager getWatchManager()
      Description copied from interface: Configuration
      Return the WatchManager.
      Specified by:
      getWatchManager in interface Configuration
      Returns:
      the WatchManager.
    • getScheduler

      public ConfigurationScheduler getScheduler()
      Specified by:
      getScheduler in interface Configuration
    • getRootNode

      public Node getRootNode()
    • getAsyncLoggerConfigDelegate

      public AsyncLoggerConfigDelegate getAsyncLoggerConfigDelegate()
      Description copied from interface: Configuration
      Returns the AsyncLoggerConfigDelegate shared by all AsyncLoggerConfig instances defined in this Configuration.
      Specified by:
      getAsyncLoggerConfigDelegate in interface Configuration
      Returns:
      the AsyncLoggerConfigDelegate
    • getAsyncWaitStrategyFactory

      public AsyncWaitStrategyFactory getAsyncWaitStrategyFactory()
      Description copied from interface: Configuration
      Returns the AsyncWaitStrategyFactory defined in this Configuration; this factory is used to create the LMAX disruptor WaitStrategy used by the disruptor ringbuffer for Async Loggers.
      Specified by:
      getAsyncWaitStrategyFactory in interface Configuration
      Returns:
      the AsyncWaitStrategyFactory
    • initialize

      public void initialize()
      Initialize the configuration.
      Specified by:
      initialize in interface LifeCycle
      Overrides:
      initialize in class AbstractLifeCycle
    • initializeWatchers

      protected void initializeWatchers(Reconfigurable reconfigurable, ConfigurationSource configSource, int monitorIntervalSeconds)
    • start

      public void start()
      Start the configuration.
      Specified by:
      start in interface LifeCycle
      Overrides:
      start in class AbstractFilterable
    • stop

      public boolean stop(long timeout, TimeUnit timeUnit)
      Tear down the configuration.
      Specified by:
      stop in interface LifeCycle2
      Overrides:
      stop in class AbstractFilterable
      Parameters:
      timeout - the maximum time to wait
      timeUnit - the time unit of the timeout argument
      Returns:
      true if the receiver was stopped cleanly and normally, false otherwise.
    • isShutdownHookEnabled

      public boolean isShutdownHookEnabled()
      Specified by:
      isShutdownHookEnabled in interface Configuration
    • getShutdownTimeoutMillis

      public long getShutdownTimeoutMillis()
      Specified by:
      getShutdownTimeoutMillis in interface Configuration
    • setup

      public void setup()
    • getDefaultStatus

      protected Level getDefaultStatus()
    • createAdvertiser

      protected void createAdvertiser(String advertiserString, ConfigurationSource configSource, byte[] buffer, String contentType)
    • getComponent

      public <T> T getComponent(String componentName)
      Specified by:
      getComponent in interface Configuration
    • addComponent

      public void addComponent(String componentName, Object obj)
      Specified by:
      addComponent in interface Configuration
    • preConfigure

      protected void preConfigure(Node node)
    • processConditionals

      protected void processConditionals(Node node)
      Process conditions by evaluating them and including the children of conditions that are true and discarding those that are not.
      Parameters:
      node - The node to evaluate.
    • processSelect

      protected List<Node> processSelect(Node selectNode, PluginType<?> type)
      Handle Select nodes. This finds the first child condition that returns true and attaches its children to the parent of the Select Node. Other Nodes are discarded.
      Parameters:
      selectNode - The Select Node.
      type - The PluginType of the Select Node.
      Returns:
      The list of Nodes to be added to the parent.
    • doConfigure

      protected void doConfigure()
    • getDefaultLevel

      public static Level getDefaultLevel()
    • setToDefault

      protected void setToDefault()
    • setName

      public void setName(String name)
      Set the name of the configuration.
      Parameters:
      name - The name.
    • getName

      public String getName()
      Returns the name of the configuration.
      Specified by:
      getName in interface Configuration
      Returns:
      the name of the configuration.
    • addListener

      public void addListener(ConfigurationListener listener)
      Add a listener for changes on the configuration.
      Specified by:
      addListener in interface Configuration
      Parameters:
      listener - The ConfigurationListener to add.
    • removeListener

      public void removeListener(ConfigurationListener listener)
      Remove a ConfigurationListener.
      Specified by:
      removeListener in interface Configuration
      Parameters:
      listener - The ConfigurationListener to remove.
    • getAppender

      public <T extends Appender> T getAppender(String appenderName)
      Returns the Appender with the specified name.
      Specified by:
      getAppender in interface Configuration
      Type Parameters:
      T - The expected Appender type.
      Parameters:
      appenderName - The name of the Appender.
      Returns:
      the Appender with the specified name or null if the Appender cannot be located.
    • getAppenders

      public Map<String,Appender> getAppenders()
      Returns a Map containing all the Appenders and their name.
      Specified by:
      getAppenders in interface Configuration
      Returns:
      A Map containing each Appender's name and the Appender object.
    • addAppender

      public void addAppender(Appender appender)
      Adds an Appender to the configuration.
      Specified by:
      addAppender in interface Configuration
      Parameters:
      appender - The Appender to add.
    • getStrSubstitutor

      public StrSubstitutor getStrSubstitutor()
      Specified by:
      getStrSubstitutor in interface Configuration
    • getConfigurationStrSubstitutor

      public StrSubstitutor getConfigurationStrSubstitutor()
      Specified by:
      getConfigurationStrSubstitutor in interface Configuration
    • setAdvertiser

      public void setAdvertiser(Advertiser advertiser)
      Specified by:
      setAdvertiser in interface Configuration
    • getAdvertiser

      public Advertiser getAdvertiser()
      Specified by:
      getAdvertiser in interface Configuration
    • getReliabilityStrategy

      public ReliabilityStrategy getReliabilityStrategy(LoggerConfig loggerConfig)
      Specified by:
      getReliabilityStrategy in interface Configuration
    • addLoggerAppender

      public void addLoggerAppender(Logger logger, Appender appender)
      Associates an Appender with a LoggerConfig. This method is synchronized in case a Logger with the same name is being updated at the same time. Note: This method is not used when configuring via configuration. It is primarily used by unit tests.
      Specified by:
      addLoggerAppender in interface Configuration
      Parameters:
      logger - The Logger the Appender will be associated with.
      appender - The Appender.
    • addLoggerFilter

      public void addLoggerFilter(Logger logger, Filter filter)
      Associates a Filter with a LoggerConfig. This method is synchronized in case a Logger with the same name is being updated at the same time. Note: This method is not used when configuring via configuration. It is primarily used by unit tests.
      Specified by:
      addLoggerFilter in interface Configuration
      Parameters:
      logger - The Logger the Footer will be associated with.
      filter - The Filter.
    • setLoggerAdditive

      public void setLoggerAdditive(Logger logger, boolean additive)
      Marks a LoggerConfig as additive. This method is synchronized in case a Logger with the same name is being updated at the same time. Note: This method is not used when configuring via configuration. It is primarily used by unit tests.
      Specified by:
      setLoggerAdditive in interface Configuration
      Parameters:
      logger - The Logger the Appender will be associated with.
      additive - True if the LoggerConfig should be additive, false otherwise.
    • removeAppender

      public void removeAppender(String appenderName)
      Remove an Appender. First removes any associations between LoggerConfigs and the Appender, removes the Appender from this appender list and then stops the appender. This method is synchronized in case an Appender with the same name is being added during the removal.
      Parameters:
      appenderName - the name of the appender to remove.
    • getCustomLevels

      public List<CustomLevelConfig> getCustomLevels()
      Description copied from interface: Configuration

      Returns a list of descriptors of the custom levels defined in the current configuration. The returned list does not include custom levels that are defined in code with direct calls to Level.forName(String, int).

      Note that the list does not include levels of previous configurations. For example, suppose a configuration contains custom levels A, B and C. The configuration is then modified to contain custom levels B, C and D. For the new configuration, this method will return only {B, C, D}, that is, only the custom levels defined in this configuration. The previously defined level A still exists (and can be obtained with Level.getLevel(String)), it is just not in the current configuration. Level.values() will return {A, B, C, D and the built-in levels}.

      Specified by:
      getCustomLevels in interface Configuration
      Returns:
      the custom levels defined in the current configuration
    • getLoggerConfig

      public LoggerConfig getLoggerConfig(String loggerName)
      Locates the appropriate LoggerConfig for a Logger name. This will remove tokens from the package name as necessary or return the root LoggerConfig if no other matches were found.
      Specified by:
      getLoggerConfig in interface Configuration
      Parameters:
      loggerName - The Logger name.
      Returns:
      The located LoggerConfig.
    • getLoggerContext

      public LoggerContext getLoggerContext()
      Description copied from interface: Configuration
      Gets the logger context.
      Specified by:
      getLoggerContext in interface Configuration
      Returns:
      the logger context.
    • getRootLogger

      public LoggerConfig getRootLogger()
      Returns the root Logger.
      Specified by:
      getRootLogger in interface Configuration
      Returns:
      the root Logger.
    • getLoggers

      public Map<String,LoggerConfig> getLoggers()
      Returns a Map of all the LoggerConfigs.
      Specified by:
      getLoggers in interface Configuration
      Returns:
      a Map with each entry containing the name of the Logger and the LoggerConfig.
    • getLogger

      public LoggerConfig getLogger(String loggerName)
      Returns the LoggerConfig with the specified name.
      Parameters:
      loggerName - The Logger name.
      Returns:
      The LoggerConfig or null if no match was found.
    • addLogger

      public void addLogger(String loggerName, LoggerConfig loggerConfig)
      Add a loggerConfig. The LoggerConfig must already be configured with Appenders, Filters, etc. After addLogger is called LoggerContext.updateLoggers must be called.
      Specified by:
      addLogger in interface Configuration
      Parameters:
      loggerName - The name of the Logger.
      loggerConfig - The LoggerConfig.
    • removeLogger

      public void removeLogger(String loggerName)
      Remove a LoggerConfig.
      Specified by:
      removeLogger in interface Configuration
      Parameters:
      loggerName - The name of the Logger.
    • createConfiguration

      public void createConfiguration(Node node, LogEvent event)
      Specified by:
      createConfiguration in interface Configuration
    • createPluginObject

      public Object createPluginObject(PluginType<?> type, Node node)
      This method is used by Arbiters to create specific children.
      Parameters:
      type - The PluginType.
      node - The Node.
      Returns:
      The created object or null;
    • toByteArray

      protected static byte[] toByteArray(InputStream is) throws IOException
      Reads an InputStream using buffered reads into a byte array buffer. The given InputStream will remain open after invocation of this method.
      Parameters:
      is - the InputStream to read into a byte array buffer.
      Returns:
      a byte array of the InputStream contents.
      Throws:
      IOException - if the read method of the provided InputStream throws this exception.
    • getNanoClock

      public NanoClock getNanoClock()
      Description copied from interface: Configuration
      Returns the NanoClock instance for this configuration.
      Specified by:
      getNanoClock in interface Configuration
      Returns:
      the nano clock
    • setNanoClock

      public void setNanoClock(NanoClock nanoClock)
      Description copied from interface: Configuration
      Sets the NanoClock instance for this configuration.
      Specified by:
      setNanoClock in interface Configuration
      Parameters:
      nanoClock - the new nano clock for this configuration. Must be non-null.