Project Alternative log4j Configuration
Internal
Overview
A pattern that consists in applying alternative log4j configuration for applications that run in background. The application rely on a base log4j configuration file, usually shipped as part of the application's installation bundle, but it can change its logging behavior based on logging configuration present in the application's configuration file. Configuration that comes from the application's configuration file takes priority over configuration stored in log4j.xml, and the application usually ends up with a combination of those two, which is the effective logging configuration.
Important! The effective logging configuration becomes active only after AlternativeLoggingConfiguration.apply(...) is invoked. Before this call, the basis log4j.xml configuration applies. For the same reason, caching log.isTraceEnabled() into a static variable may become stale after applying the configuration change, so it is not recommended.
For command-line utilities that run in foreground and want to route their all log4j logging information to stderr if -v or --verbose command line options are used, see:
log4j Debugging on --verbose and alternative log4j configuration can be combined, where --verbose flag applies until the configuration file is parsed and the new logging configuration is installed.
API
The API to support alternative logging configuration is available in novaordis-utilities 4.7.8 or newer, and consists in a collection of static utilities AlternativeLoggingConfiguration, the LoggingConfiguration interface and other support classes.
Yaml yaml = new Yaml();
Map m = (Map)yaml.load(...);
Map alternativeLoggingConfigurationMap = m.get(...);
LoggingConfiguration c = new YamlLoggingConfiguration(alternativeLoggingConfigurationMap);
AlternativeLoggingConfiguration.apply(c);
YAML Configuration
logging: file: /some/file.log loggers: - org.something: INFO - com.something.else: TRACE