This post describes how log4j can be configured outside of the application and also changed at runtime.
File WatchdogLog4j provides runtime configuration through the
DOMConfigurator.configureAndWatchfor XML files, or the
PropertyConfigurator.configureAndWatchfor properties file. Both these methods take the absolute path for the configuration file and a refresh interval. This allows the configuration file to be located outside of a web application war file and allow administrators to change the logging levels at runtime.
configureAndWatchAPI can be invoked from a custom servlet listener. For users of the Spring framework, there already exists the
Log4jConfigListenerthat is a wrapper to the Log4j
configureAndWatchAPI. This listener is configured in the web applications web.xml.
By specifying the
log4jConfigLocationto a file outside the web application, it allows different environments (dev, test, prod) to have different levels of logging enabled. The
log4jRefreshIntervalspecifies how often the log4j.properties file should be checked for changes and reloaded. This allows runtime changes to the log4j configuration to be performed.
JMXLog4j also has built-in support for JMX and two classes
org.apache.log4j.HierarchyDynamicMBeanare used to expose and register loggers as MBeans. However, it still requires wrappers to work to add loggers that are not defined at start-up.