Class LoggerContext
- All Implemented Interfaces:
AutoCloseable,ConfigurationListener,LifeCycle,LifeCycle2,LoggerContext,LoggerContextShutdownEnabled,Terminable
- Direct Known Subclasses:
AsyncLoggerContext
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.logging.log4j.core.LifeCycle
LifeCycle.State -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate URIprivate final Lockprivate ConfigurationThe Configuration is volatile to guarantee that initialization of the Configuration has completed before the reference is updated.private Stringprivate static final Stringprivate ConcurrentMap<String, Object> private List<LoggerContextShutdownAware> private final LoggerRegistry<Logger> private static final Configurationstatic final StringProperty name of the property change event fired if the configuration is changed.private final CopyOnWriteArrayList<PropertyChangeListener> private CancellableFields inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
DEFAULT_STOP_TIMEOUT, DEFAULT_STOP_TIMEUNIT, LOGGERFields inherited from interface org.apache.logging.log4j.spi.LoggerContext
EMPTY_ARRAY -
Constructor Summary
ConstructorsConstructorDescriptionLoggerContext(String name) Constructor taking only a name.LoggerContext(String name, Object externalContext) Constructor taking a name and a reference to an external context.LoggerContext(String name, Object externalContext, String configLocn) Constructor taking a name external context and a configuration location String.LoggerContext(String name, Object externalContext, URI configLocn) Constructor taking a name, external context and a configuration URI. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a Filter to the Configuration.voidvoidvoidclose()private voidReturns the initial configuration location ornull.Returns the current Configuration.static LoggerContextReturns the current LoggerContext.static LoggerContextgetContext(boolean currentContext) Returns a LoggerContext.static LoggerContextgetContext(ClassLoader loader, boolean currentContext, URI configLocation) Returns a LoggerContext.Returns the external context.Gets a Logger from the Context.getLogger(String name, MessageFactory messageFactory) Obtains a Logger from the Context.Gets the LoggerRegistry.Gets a collection of the current loggers.getName()Gets the name.Gets an object by its name.Gets the root logger.booleanDetermines if the specified Logger exists.booleanhasLogger(String name, Class<? extends MessageFactory> messageFactoryClass) Determines if the specified Logger exists.booleanhasLogger(String name, MessageFactory messageFactory) Determines if the specified Logger exists.private voidprotected LoggernewInstance(LoggerContext ctx, String name, MessageFactory messageFactory) voidonChange(Reconfigurable reconfigurable) Causes a reconfiguration to take place when the underlying configuration file changes.Associates an object into the LoggerContext by name for later use.putObjectIfAbsent(String key, Object value) Associates an object into the LoggerContext by name for later use if an object is not already stored with that key.voidReconfigures the context.private voidreconfigure(URI configURI) Reconfigures the context.voidreconfigure(Configuration configuration) voidremoveFilter(Filter filter) Removes a Filter from the current Configuration.removeObject(String key) Removes an object if it is present.booleanremoveObject(String key, Object value) Removes an object if it is present and the provided object is stored.voidvoidsetConfigLocation(URI configLocation) Sets the configLocation to the specified value and reconfigures this context.setConfiguration(Configuration config) Sets the Configuration to be used.voidsetExternalContext(Object context) Sets the external context.voidSets the name.private voidvoidstart()voidstart(Configuration config) Starts with a specific configuration.booleanBlocks 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.voidRequests that the logging implementation shut down.voidCauses all Loggers to be updated against the current Configuration.voidupdateLoggers(Configuration config) Causes all Logger to be updated against the specified Configuration.Methods inherited from class org.apache.logging.log4j.core.AbstractLifeCycle
equalsImpl, getState, getStatusLogger, hashCodeImpl, initialize, isInitialized, isStarted, isStarting, isStopped, isStopping, setStarted, setStarting, setState, setStopped, setStopping, stop, stopMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.logging.log4j.spi.LoggerContext
getLogger, getLogger
-
Field Details
-
PROPERTY_CONFIG
Property name of the property change event fired if the configuration is changed.- See Also:
-
NULL_CONFIGURATION
-
loggerRegistry
-
propertyChangeListeners
-
listeners
-
configuration
The Configuration is volatile to guarantee that initialization of the Configuration has completed before the reference is updated. -
EXTERNAL_CONTEXT_KEY
- See Also:
-
externalMap
-
contextName
-
configLocation
-
shutdownCallback
-
configLock
-
-
Constructor Details
-
LoggerContext
Constructor taking only a name.- Parameters:
name- The context name.
-
LoggerContext
Constructor taking a name and a reference to an external context.- Parameters:
name- The context name.externalContext- The external context.
-
LoggerContext
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
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 Details
-
addShutdownListener
- Specified by:
addShutdownListenerin interfaceLoggerContextShutdownEnabled
-
getListeners
- Specified by:
getListenersin interfaceLoggerContextShutdownEnabled
-
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:
-
getContext
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:
-
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:
-
start
public void start()- Specified by:
startin interfaceLifeCycle- Overrides:
startin classAbstractLifeCycle
-
start
Starts with a specific configuration.- Parameters:
config- The new Configuration.
-
setUpShutdownHook
private void setUpShutdownHook() -
close
public void close()- Specified by:
closein interfaceAutoCloseable
-
terminate
public void terminate()Description copied from interface:TerminableRequests 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:
terminatein interfaceTerminable
-
stop
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:
stopin interfaceLifeCycle2- Overrides:
stopin classAbstractLifeCycle- Parameters:
timeout- the maximum time to wait, or 0 which mean that each apppender uses its default timeout, and don't wait for background taskstimeUnit- the time unit of the timeout argument- Returns:
trueif the logger context terminated andfalseif the timeout elapsed before termination.- Since:
- 2.7
-
getName
Gets the name.- Returns:
- the name.
-
getRootLogger
Gets the root logger.- Returns:
- the root logger.
-
setName
Sets the name.- Parameters:
name- the new LoggerContext name- Throws:
NullPointerException- if the specified name isnull
-
getObject
Description copied from interface:LoggerContextGets an object by its name.- Specified by:
getObjectin interfaceLoggerContext- Parameters:
key- The object's key.- Returns:
- The Object that is associated with the key, if any.
-
putObject
Description copied from interface:LoggerContextAssociates an object into the LoggerContext by name for later use.- Specified by:
putObjectin interfaceLoggerContext- Parameters:
key- The object's key.value- The object.- Returns:
- The previous object or null.
-
putObjectIfAbsent
Description copied from interface:LoggerContextAssociates an object into the LoggerContext by name for later use if an object is not already stored with that key.- Specified by:
putObjectIfAbsentin interfaceLoggerContext- Parameters:
key- The object's key.value- The object.- Returns:
- The previous object or null.
-
removeObject
Description copied from interface:LoggerContextRemoves an object if it is present.- Specified by:
removeObjectin interfaceLoggerContext- Parameters:
key- The object's key.- Returns:
- The object if it was present, null if it was not.
-
removeObject
Description copied from interface:LoggerContextRemoves an object if it is present and the provided object is stored.- Specified by:
removeObjectin interfaceLoggerContext- Parameters:
key- The object's key.value- The object.- Returns:
- The object if it was present, null if it was not.
-
setExternalContext
Sets the external context.- Parameters:
context- The external context.
-
getExternalContext
Returns the external context.- Specified by:
getExternalContextin interfaceLoggerContext- Returns:
- The external context.
-
getLogger
Gets a Logger from the Context.- Specified by:
getLoggerin interfaceLoggerContext- Parameters:
name- The name of the Logger to return.- Returns:
- The 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
Obtains a Logger from the Context.- Specified by:
getLoggerin interfaceLoggerContext- 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.
-
getLoggerRegistry
Gets the LoggerRegistry.- Specified by:
getLoggerRegistryin interfaceLoggerContext- Returns:
- the LoggerRegistry.
- Since:
- 2.17.2
-
hasLogger
Determines if the specified Logger exists.- Specified by:
hasLoggerin interfaceLoggerContext- Parameters:
name- The Logger name to search for.- Returns:
- True if the Logger exists, false otherwise.
-
hasLogger
Determines if the specified Logger exists.- Specified by:
hasLoggerin interfaceLoggerContext- Parameters:
name- The Logger name to search for.messageFactory- The message factory to search for.- Returns:
- True if the Logger exists, false otherwise.
-
hasLogger
Determines if the specified Logger exists.- Specified by:
hasLoggerin interfaceLoggerContext- 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
Returns the current Configuration. The Configuration will be replaced when a reconfigure occurs.- Returns:
- The current Configuration, never
null, but may beNullConfiguration.
-
addFilter
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
Removes a Filter from the current Configuration.- Parameters:
filter- The Filter to remove.
-
setConfiguration
Sets the Configuration to be used.- Parameters:
config- The new Configuration.- Returns:
- The previous Configuration.
-
firePropertyChangeEvent
-
addPropertyChangeListener
-
removePropertyChangeListener
-
getConfigLocation
Returns the initial configuration location ornull. The returned value may not be the location of the current configuration. UsegetConfiguration().getConfigurationSource().getLocation()to get the actual source of the current configuration.- Returns:
- the initial configuration location or
null
-
setConfigLocation
Sets the configLocation to the specified value and reconfigures this context.- Parameters:
configLocation- the location of the new configuration
-
reconfigure
Reconfigures the context. -
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
-
updateLoggers
public void updateLoggers()Causes all Loggers to be updated against the current Configuration. -
updateLoggers
Causes all Logger to be updated against the specified Configuration.- Parameters:
config- The Configuration.
-
onChange
Causes a reconfiguration to take place when the underlying configuration file changes.- Specified by:
onChangein interfaceConfigurationListener- Parameters:
reconfigurable- The Configuration that can be reconfigured.
-
initApiModule
private void initApiModule() -
newInstance
-