Retrieve List of Log4J Appenders at Run Time
java, log4j, logging
Solution
If you want access to all appenders configured for all loggers you must do something like this
for (Enumeration loggers=LogManager.getCurrentLoggers(); loggers.hasMoreElements(); ) {
Logger logger = (Logger) loggers.nextElement();
for (Enumeration appenders=logger.getAllAppenders(); appenders.hasMoreElements(); ) {
Appender appender = (Appender) appenders.nextElement();
...
I don't know why log4j has no method like LogManager.getAllAppenders(), but it looks like disadvantage.
Problem
Is it possible to retrieve a list of all appenders configured in log4j at run time? I'll flesh out the scenario a little more. Given the following config how would I retrieve all appenders (stdout and altstdout)? ``` log4j.rootLogger=error, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.altstdout=org.apache.log4j.ConsoleAppender log4j.appender.altstdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.altstdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n ```