Question

I am trying to configure log4j2 so that

  1. I can access the loggers via JMX and
  2. change their log levels.

When I hook everything up, I am able to access the LoggerContext via JConsole, which contains all of my LoggerConfigs.

Each LoggerConfig show the correct log level with which the application is running. And if I update a log level in any LoggerConfig it call the MBean and update the logging level correctly, which I have inspected via debugging. But the problem is that updating the log level doesn't take any effect. The application keeps on logging with the old logging level.

For example If I start the application with the XYZ logger with log level DEBUG, and change this log level to FATAL via JConsole, it changes successfully but application keep on logging in DEBUG level.

If instead of updating the single LoggerConfig if I update the LoggerContext by passing the new xml configuration with updated logging levels it works as expected.

What should be the problem? Documentation is quite and google refused to help me.

My Findings:

As far as I understood this problem is that when I update the Log level in the LoggerConfig via JConsole, log4j2 update the log level via MBean correctly but its not updating the LoggerContext, it simply call the setter method and returns. But in case if I update LoggerCoentext log4j2 create the new context to update itself.

Was it helpful?

Solution

This was indeed a bug. Thanks for reporting it. This has been fixed in trunk and will be included in the next release (rc2).

OTHER TIPS

Sounds like a bug in Log4j2. I see you have raised it on their JIRA @ https://issues.apache.org/jira/browse/LOG4J2-637 so we'll track the progress there. :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top