Class AbstractConfiguration
- java.lang.Object
-
- org.apache.logging.log4j.core.AbstractLifeCycle
-
- org.apache.logging.log4j.core.filter.AbstractFilterable
-
- org.apache.logging.log4j.core.config.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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
AbstractFilterable.Builder<B extends AbstractFilterable.Builder<B>>
-
Nested classes/interfaces inherited from interface org.apache.logging.log4j.core.LifeCycle
LifeCycle.State
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanisShutdownHookEnabledShutdown hook is enabled by default.protected java.util.List<ConfigurationListener>listenersListeners for configuration changes.protected PluginManagerpluginManagerThe plugin manager.protected java.util.List<java.lang.String>pluginPackagesPackages found in configuration "packages" attribute.protected NoderootNodeThe root node of the configuration.protected ScriptManagerscriptManagerThe Script manager.protected longshutdownTimeoutMillisShutdown timeout in milliseconds.-
Fields inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
DEFAULT_STOP_TIMEOUT, DEFAULT_STOP_TIMEUNIT, LOGGER
-
Fields inherited from interface org.apache.logging.log4j.core.config.Configuration
CONTEXT_PROPERTIES
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractConfiguration(LoggerContext loggerContext, ConfigurationSource configurationSource)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAppender(Appender appender)Adds an Appender to the configuration.voidaddComponent(java.lang.String componentName, java.lang.Object obj)voidaddListener(ConfigurationListener listener)Add a listener for changes on the configuration.voidaddLogger(java.lang.String loggerName, LoggerConfig loggerConfig)Add a loggerConfig.voidaddLoggerAppender(Logger logger, Appender appender)Associates an Appender with a LoggerConfig.voidaddLoggerFilter(Logger logger, Filter filter)Associates a Filter with a LoggerConfig.protected voidcreateAdvertiser(java.lang.String advertiserString, ConfigurationSource configSource, byte[] buffer, java.lang.String contentType)voidcreateConfiguration(Node node, LogEvent event)protected voiddoConfigure()AdvertisergetAdvertiser()<T extends Appender>
TgetAppender(java.lang.String appenderName)Returns the Appender with the specified name.java.util.Map<java.lang.String,Appender>getAppenders()Returns a Map containing all the Appenders and their name.AsyncLoggerConfigDelegategetAsyncLoggerConfigDelegate()Returns theAsyncLoggerConfigDelegateshared by allAsyncLoggerConfiginstances defined in this Configuration.<T> TgetComponent(java.lang.String componentName)ConfigurationSourcegetConfigurationSource()Returns the source of this configuration.StrSubstitutorgetConfigurationStrSubstitutor()java.util.List<CustomLevelConfig>getCustomLevels()Returns a list of descriptors of the custom levels defined in the current configuration.protected LevelgetDefaultStatus()LoggerConfiggetLogger(java.lang.String loggerName)Returns the LoggerConfig with the specified name.LoggerConfiggetLoggerConfig(java.lang.String loggerName)Locates the appropriate LoggerConfig for a Logger name.LoggerContextgetLoggerContext()Gets the logger context.java.util.Map<java.lang.String,LoggerConfig>getLoggers()Returns a Map of all the LoggerConfigs.java.lang.StringgetName()Returns the name of the configuration.NanoClockgetNanoClock()Returns theNanoClockinstance for this configuration.PluginManagergetPluginManager()java.util.List<java.lang.String>getPluginPackages()Returns the list of packages to scan for plugins for this Configuration.java.util.Map<java.lang.String,java.lang.String>getProperties()ReliabilityStrategygetReliabilityStrategy(LoggerConfig loggerConfig)LoggerConfiggetRootLogger()Returns the root Logger.NodegetRootNode()ConfigurationSchedulergetScheduler()ScriptManagergetScriptManager()longgetShutdownTimeoutMillis()StrSubstitutorgetStrSubstitutor()WatchManagergetWatchManager()Return the WatchManager.voidinitialize()Initialize the configuration.protected voidinitializeWatchers(Reconfigurable reconfigurable, ConfigurationSource configSource, int monitorIntervalSeconds)booleanisShutdownHookEnabled()protected voidpreConfigure(Node node)voidremoveAppender(java.lang.String appenderName)Remove an Appender.voidremoveListener(ConfigurationListener listener)Remove a ConfigurationListener.voidremoveLogger(java.lang.String loggerName)Remove a LoggerConfig.voidsetAdvertiser(Advertiser advertiser)voidsetLoggerAdditive(Logger logger, boolean additive)Marks a LoggerConfig as additive.voidsetName(java.lang.String name)Set the name of the configuration.voidsetNanoClock(NanoClock nanoClock)Sets theNanoClockinstance for this configuration.voidsetPluginManager(PluginManager pluginManager)voidsetScriptManager(ScriptManager scriptManager)protected voidsetToDefault()voidsetup()voidstart()Start the configuration.booleanstop(long timeout, java.util.concurrent.TimeUnit timeUnit)Tear down the configuration.protected static byte[]toByteArray(java.io.InputStream is)Reads an InputStream using buffered reads into a byte array buffer.-
Methods inherited from class org.apache.logging.log4j.core.filter.AbstractFilterable
addFilter, getFilter, getPropertyArray, hasFilter, isFiltered, removeFilter, stop
-
Methods inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
equalsImpl, getState, getStatusLogger, hashCodeImpl, isInitialized, isStarted, isStarting, isStopped, isStopping, setStarted, setStarting, setState, setStopped, setStopping, stop, stop
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.logging.log4j.core.filter.Filterable
addFilter, getFilter, hasFilter, isFiltered, removeFilter
-
-
-
-
Field Detail
-
rootNode
protected Node rootNode
The root node of the configuration.
-
listeners
protected final java.util.List<ConfigurationListener> listeners
Listeners for configuration changes.
-
pluginPackages
protected final java.util.List<java.lang.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 Detail
-
AbstractConfiguration
protected AbstractConfiguration(LoggerContext loggerContext, ConfigurationSource configurationSource)
Constructor.
-
-
Method Detail
-
getConfigurationSource
public ConfigurationSource getConfigurationSource()
Description copied from interface:ConfigurationReturns the source of this configuration.- Specified by:
getConfigurationSourcein interfaceConfiguration- Returns:
- the source of this configuration, never
null, but may beConfigurationSource.NULL_SOURCE.
-
getPluginPackages
public java.util.List<java.lang.String> getPluginPackages()
Description copied from interface:ConfigurationReturns the list of packages to scan for plugins for this Configuration.- Specified by:
getPluginPackagesin interfaceConfiguration- Returns:
- the list of plugin packages.
-
getProperties
public java.util.Map<java.lang.String,java.lang.String> getProperties()
- Specified by:
getPropertiesin interfaceConfiguration
-
getScriptManager
public ScriptManager getScriptManager()
- Specified by:
getScriptManagerin interfaceConfiguration
-
setScriptManager
public void setScriptManager(ScriptManager scriptManager)
-
getPluginManager
public PluginManager getPluginManager()
-
setPluginManager
public void setPluginManager(PluginManager pluginManager)
-
getWatchManager
public WatchManager getWatchManager()
Description copied from interface:ConfigurationReturn the WatchManager.- Specified by:
getWatchManagerin interfaceConfiguration- Returns:
- the WatchManager.
-
getScheduler
public ConfigurationScheduler getScheduler()
- Specified by:
getSchedulerin interfaceConfiguration
-
getRootNode
public Node getRootNode()
-
getAsyncLoggerConfigDelegate
public AsyncLoggerConfigDelegate getAsyncLoggerConfigDelegate()
Description copied from interface:ConfigurationReturns theAsyncLoggerConfigDelegateshared by allAsyncLoggerConfiginstances defined in this Configuration.- Specified by:
getAsyncLoggerConfigDelegatein interfaceConfiguration- Returns:
- the
AsyncLoggerConfigDelegate
-
initialize
public void initialize()
Initialize the configuration.- Specified by:
initializein interfaceLifeCycle- Overrides:
initializein classAbstractLifeCycle
-
initializeWatchers
protected void initializeWatchers(Reconfigurable reconfigurable, ConfigurationSource configSource, int monitorIntervalSeconds)
-
start
public void start()
Start the configuration.- Specified by:
startin interfaceLifeCycle- Overrides:
startin classAbstractFilterable
-
stop
public boolean stop(long timeout, java.util.concurrent.TimeUnit timeUnit)Tear down the configuration.- Specified by:
stopin interfaceLifeCycle2- Overrides:
stopin classAbstractFilterable- Parameters:
timeout- the maximum time to waittimeUnit- 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:
isShutdownHookEnabledin interfaceConfiguration
-
getShutdownTimeoutMillis
public long getShutdownTimeoutMillis()
- Specified by:
getShutdownTimeoutMillisin interfaceConfiguration
-
setup
public void setup()
-
getDefaultStatus
protected Level getDefaultStatus()
-
createAdvertiser
protected void createAdvertiser(java.lang.String advertiserString, ConfigurationSource configSource, byte[] buffer, java.lang.String contentType)
-
getComponent
public <T> T getComponent(java.lang.String componentName)
- Specified by:
getComponentin interfaceConfiguration
-
addComponent
public void addComponent(java.lang.String componentName, java.lang.Object obj)- Specified by:
addComponentin interfaceConfiguration
-
preConfigure
protected void preConfigure(Node node)
-
doConfigure
protected void doConfigure()
-
setToDefault
protected void setToDefault()
-
setName
public void setName(java.lang.String name)
Set the name of the configuration.- Parameters:
name- The name.
-
getName
public java.lang.String getName()
Returns the name of the configuration.- Specified by:
getNamein interfaceConfiguration- Returns:
- the name of the configuration.
-
addListener
public void addListener(ConfigurationListener listener)
Add a listener for changes on the configuration.- Specified by:
addListenerin interfaceConfiguration- Parameters:
listener- The ConfigurationListener to add.
-
removeListener
public void removeListener(ConfigurationListener listener)
Remove a ConfigurationListener.- Specified by:
removeListenerin interfaceConfiguration- Parameters:
listener- The ConfigurationListener to remove.
-
getAppender
public <T extends Appender> T getAppender(java.lang.String appenderName)
Returns the Appender with the specified name.- Specified by:
getAppenderin interfaceConfiguration- 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 java.util.Map<java.lang.String,Appender> getAppenders()
Returns a Map containing all the Appenders and their name.- Specified by:
getAppendersin interfaceConfiguration- 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:
addAppenderin interfaceConfiguration- Parameters:
appender- The Appender to add.
-
getStrSubstitutor
public StrSubstitutor getStrSubstitutor()
- Specified by:
getStrSubstitutorin interfaceConfiguration
-
getConfigurationStrSubstitutor
public StrSubstitutor getConfigurationStrSubstitutor()
-
setAdvertiser
public void setAdvertiser(Advertiser advertiser)
- Specified by:
setAdvertiserin interfaceConfiguration
-
getAdvertiser
public Advertiser getAdvertiser()
- Specified by:
getAdvertiserin interfaceConfiguration
-
getReliabilityStrategy
public ReliabilityStrategy getReliabilityStrategy(LoggerConfig loggerConfig)
- Specified by:
getReliabilityStrategyin interfaceConfiguration
-
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:
addLoggerAppenderin interfaceConfiguration- 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:
addLoggerFilterin interfaceConfiguration- 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:
setLoggerAdditivein interfaceConfiguration- Parameters:
logger- The Logger the Appender will be associated with.additive- True if the LoggerConfig should be additive, false otherwise.
-
removeAppender
public void removeAppender(java.lang.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 java.util.List<CustomLevelConfig> getCustomLevels()
Description copied from interface:ConfigurationReturns 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:
getCustomLevelsin interfaceConfiguration- Returns:
- the custom levels defined in the current configuration
-
getLoggerConfig
public LoggerConfig getLoggerConfig(java.lang.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:
getLoggerConfigin interfaceConfiguration- Parameters:
loggerName- The Logger name.- Returns:
- The located LoggerConfig.
-
getLoggerContext
public LoggerContext getLoggerContext()
Description copied from interface:ConfigurationGets the logger context.- Specified by:
getLoggerContextin interfaceConfiguration- Returns:
- the logger context.
-
getRootLogger
public LoggerConfig getRootLogger()
Returns the root Logger.- Specified by:
getRootLoggerin interfaceConfiguration- Returns:
- the root Logger.
-
getLoggers
public java.util.Map<java.lang.String,LoggerConfig> getLoggers()
Returns a Map of all the LoggerConfigs.- Specified by:
getLoggersin interfaceConfiguration- Returns:
- a Map with each entry containing the name of the Logger and the LoggerConfig.
-
getLogger
public LoggerConfig getLogger(java.lang.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(java.lang.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:
addLoggerin interfaceConfiguration- Parameters:
loggerName- The name of the Logger.loggerConfig- The LoggerConfig.
-
removeLogger
public void removeLogger(java.lang.String loggerName)
Remove a LoggerConfig.- Specified by:
removeLoggerin interfaceConfiguration- Parameters:
loggerName- The name of the Logger.
-
createConfiguration
public void createConfiguration(Node node, LogEvent event)
- Specified by:
createConfigurationin interfaceConfiguration
-
toByteArray
protected static byte[] toByteArray(java.io.InputStream is) throws java.io.IOExceptionReads 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:
java.io.IOException- if thereadmethod of the provided InputStream throws this exception.
-
getNanoClock
public NanoClock getNanoClock()
Description copied from interface:ConfigurationReturns theNanoClockinstance for this configuration.- Specified by:
getNanoClockin interfaceConfiguration- Returns:
- the nano clock
-
setNanoClock
public void setNanoClock(NanoClock nanoClock)
Description copied from interface:ConfigurationSets theNanoClockinstance for this configuration.- Specified by:
setNanoClockin interfaceConfiguration- Parameters:
nanoClock- the new nano clock for this configuration. Must be non-null.
-
-