Number of loggers used

I am working on a very large java application with log4j, and I was wondering if there is a way to extract the number of active loggers in runtime? Or what are the existing registrars in the application? My ultimate goal is to get a list of all registrars and change their level at runtime. Thanks.

+7
source share
3 answers

You can try something like:

Enumeration allLoggers = Logger.getRootLogger() .getLoggerRepository() .getCurrentLoggers(); 

Then iterate over allLoggers.

+6
source

to get registrars to use one of these

 Logger rootLogger = LogManager.getRootLogger(); //To get the Root Logger Enumeration e = LogManager.getCurrentLoggers(); //To get an enumerated list of loggers rootLogger.getName(); //To get the logger by name rootLogger.getEffectiveLevel().toString(); //To get the effective level of the current logger logger.getParent(); //Get the ccurrent loggers' parent //To set a new level for a particular Logger Logger logger = Logger.getLogger("TestLogger"); L evel lev = Level.toLevel("DEBUG"); 

to use this:

 logger.setLevel(lev); 
0
source

Or you can simply use LogManager.getCurrentLoggers() to return the Logger Enumeration .Loop through it and set the Logger level with setLevel ()

 for (Enumeration<Logger> loggerEnumeratin = LogManager.getCurrentLoggers() ;loggerEnumeratin.hasMoreElements() ;){ Logger logger = loggerEnumeratin.nextElement(); logger.setLevel(Level.ERROR); } 
0
source

All Articles