在运行时检索Log4J Appender的列表 [英] Retrieve List of Log4J Appenders at Run Time

查看:44
本文介绍了在运行时检索Log4J Appender的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在运行时检索在log4j中配置的所有附加程序的列表?

Is it possible to retrieve a list of all appenders configured in log4j at run time?

我将进一步充实该方案.鉴于以下配置,我将如何检索所有附加程序(stdout和altstdout)?

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

推荐答案

如果要访问为所有记录器配置的所有附加程序,则必须执行以下操作

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();
        ...

我不知道为什么log4j没有像LogManager.getAllAppenders()这样的方法,但是它看起来像是
劣势.

I don't know why log4j has no method like LogManager.getAllAppenders(), but it looks like
disadvantage.

这篇关于在运行时检索Log4J Appender的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆