java - 在运行时检索 Log4J Appenders 列表

标签 java logging log4j

是否可以在运行时检索在 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/

相关文章:

java - log4j 到 log4j2 迁移的等效编程记录器初始化

java - 设置 Jetty 服务器

Java:合并排序是 O(N^2) 还是 O(N Log(N))

apache - Phusion 乘客未登录

python - 非常具体的子串检索和分割

java - 如何使用 log4j.xml 为日志文件创建文件夹

java - JPA 删除时级联抽象/继承类

java - 如何使用 SAML 在 Java 中实现 SSO?

logging - 如何判断 Play 2.4 为何关闭

java - 使用 Xuggler 通过 Java 检测网络摄像头