是否可以在运行时检索在 log4j 中配置的所有附加程序的列表?
我会进一步充实这个场景。给定以下配置,我将如何检索所有附加程序(stdout 和 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
最佳答案
如果你想访问为所有记录器配置的所有附加程序,你必须做这样的事情
for (Enumeration loggers=LogManager.getCurrentLoggers(); loggers.hasMoreElements(); ) {
Logger logger = (Logger) loggers.nextElement();
for (Enumeration appenders=logger.getAllAppenders(); appenders.hasMoreElements(); ) {
Appender appender = (Appender) appenders.nextElement();
...
我不知道为什么log4j没有像LogManager.getAllAppenders()这样的方法,但是看起来像
缺点。
关于java - 在运行时检索 Log4J Appenders 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024733/