在log4j.xml中在运行时添加和删除记录器

时间:2012-01-04 13:56:06

标签: java log4j logging

我在运行时在log4j.xml中添加记录器

<logger name="com.bas">    
       <priority value="DEBUG"/>
       <appender-ref ref="B2BAPP"/>
</logger>

我的loding runtime log4j.xml的java代码

LogManager.resetConfiguration();
DOMConfigurator.configureAndWatch(log4j.xml,100000L);

通过以下方式在java代码中获取运行时记录器:

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

当我将logger添加到log4j时,我在 enumLoggers 中获取了记录器名称,但是如果我删除任何现有的loggger(如删除了logger“com.bas”)那么它就不会从enumLogger中删除即使在指定的时间延迟之后(在这种情况下为100000L)。

我可以知道为什么吗?有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

快速查看XMLWatchdog类(及其超类)会发现它没有调用LogManager.resetConfiguration(),所以也许这就是原因?它可能意味着逐步地工作&#34;。