I have a simple web app running on Tomcat 5.5 with log4j for logging. Occasionally I need to push the logging down to DEBUG but most of the time I'm happy with INFO.
I can change my config xml and restart the app but I would prefer to switch the log levels on the fly. Is there a standard technique for this?
Use LogManager. resetConfiguration(); to clear the current config and configure it again. Another approach is to build a new appender and replace the old one with it (most appenders don't support changing their config). This way, all the loggers (and their levels, etc) stay intact.
Setting Levels using Configuration File log4j provides you configuration file based level setting which sets you free from changing the source code when you want to change the debugging level. Following is an example configuration file which would perform the same task as we did using the log. setLevel(Level.
Just use the programmatic API:
logger.setLevel(Level.DEBUG)
in your program when you need more verbose logging output, and
logger.setLevel(Level.INFO)
to make it less verbose again.
I created a new java application module (jar) to do this in a web interface at runtime, and also have a page to view the log result.
Configure the jar is very simple: must be placed in the /WEB-INF/lib
folder, and add a mapping to the servlet in the /WEB-INF/web.xml
file.
Project site: http://www.log4jwebtracker.com
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With