>From a thread back in May:

My question to the below snips of the thread are;

My app has many Catagories (using 1.x terminology).  To setLevel in 1.x I had 
to getCurrentCatagories() and iterate over the list setting level.

In 2.x, does the code below set all Appenders regardless of what Level they 
were set to in log4j.xml?

loggerConfig.setLevel(Level.DEBUG);
ctx.updateLoggers();  

The next question is how to set the level of just one Appender (Logger??)  ?   
Is there a way to get the list / iterator of Appenders(Logger?)   like you 
could get a a list of Catagories in 1.x?  

It appears that LogManager.getLogger("foo") you need to know the logger names 
at coding time.


Thanks, curt

=======

Ralph Goers said:
      >> No, the X Logger does not inherit its level from the root Logger. It 
inherits its level from
      the root LoggerConfig.  See the picture at 
http://logging.apache.org/log4j/2.x/manual/architecture.html.

      The level you are modifying is brought into each Logger so that the level 
can be tested very
      quickly.  That is why the note on the setLevel method says it is there 
primarily for unit
      testing.

      To do what you are attempting below you would need to do:

      LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
      Configuration config = ctx.getConfiguration();
      LoggerConfig loggerConfig = config.getRootLogger();
      /* You could also specify the actual logger name as below and it will 
return the LoggerConfig
      used by the Logger.
          LoggerConfig loggerConfig = getLoggerConfig("X");
      */
      loggerConfig.setLevel(Level.DEBUG);
      ctx.updateLoggers();  // This causes all Loggers to refetch information 
from their LoggerConfig.

      Ralph

Eric Scheie said:
      >> This
      is the actual code I used.

        LoggerContext ctx = (LoggerContext) LogManager.getContext(false);

        Configuration config = ctx.getConfiguration();

        LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.
      ROOT_LOGGER_NAME);

        loggerConfig.setLevel(level);

        ctx.updateLoggers();




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to