每当DOMConfigurator创建线程时,java都需要回调。配置并监视方法重新加载日志4j。xml
Java代码: DOMConfigulator。配置和监视(log4jConfigFile.getAbsolutePath(),100000L)
每当configureAndWatch方法创建的线程重新加载log4j时,我需要添加一些appender programmaticaly。xml
实际上,我以编程方式设置了一些appender,但是当线程重新加载log4j时,它会被重置。所以我需要再次以编程方式添加appender。为此,每当线程重新加载log4j时,我都需要一个回调。xml
有什么想法吗??我该怎么做
# 1 楼答案
不幸的是,Log4j没有提供在配置加载时注册回调的方法。它只是创建一个“看门狗”线程来监视文件并在文件更改时重新加载配置
我看到它完成的唯一方法是生成自己的线程,重新加载配置并添加额外的附加程序
而不是:
您可以这样做:
您配置了Log4j,添加了appender并启动了监控线程。在文件更改时重新加载配置的线程中:
查看这些类的源代码以了解更多详细信息:DOMConfigurator(滚动到底部)和FileWatchdog
不过,我的建议是只在
log4j.xml
文件中配置所有内容,而不是求助于解决方法另外,您没有提到您拥有什么类型的Java应用程序,但要注意^{} comes with a warning in Java EE applications 作为线程,应用程序关闭时不会停止;它仅在JVM关闭时停止