Log4j 2
  1. Log4j 2
  2. LOG4J2-637

Log4j2 JMX: Updating the logging level via jConsole doesn't take effect

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0-rc2
    • Component/s: JMX
    • Labels:
      None

      Description

      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.

      1. log4j2.xml
        1 kB
        Mansoor Sajjad

        Activity

        Hide
        Remko Popma added a comment -

        Fixed in revision 1602587.
        Please verify and close.

        Show
        Remko Popma added a comment - Fixed in revision 1602587. Please verify and close.
        Hide
        Jon Wilmoth added a comment -

        There appears to be a missing call to org.apache.logging.log4j.core.LoggerContext to reload the updated config (e.g. updateLoggers(Configuration) or .start(Configuration)) after org.apache.logging.log4j.core.jmx.LoggerConfigAdmin.setLevel(String) is called.

        Show
        Jon Wilmoth added a comment - There appears to be a missing call to org.apache.logging.log4j.core.LoggerContext to reload the updated config (e.g. updateLoggers(Configuration) or .start(Configuration)) after org.apache.logging.log4j.core.jmx.LoggerConfigAdmin.setLevel(String) is called.
        Hide
        Mansoor Sajjad added a comment -

        Configuration file attached.

        Show
        Mansoor Sajjad added a comment - Configuration file attached.
        Hide
        Gareth Western added a comment -

        Please provide your log4j2 configuration as well

        Show
        Gareth Western added a comment - Please provide your log4j2 configuration as well

          People

          • Assignee:
            Remko Popma
            Reporter:
            Mansoor Sajjad
          • Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development