1

我想在运行时使用 DOMConfigurator.configureAndWatch() 函数覆盖 log4j 配置。当文件参数的字符串名称被硬编码时,它是有效的。例如 :DOMConfigurator.configureAndWatch("C:/some/path/log4j.xml");

但是我的 log4j.xml 在 EAR 文件中(在 lib 目录中的 JAR 中),我如何在运行时访问它?

我进行了测试DOMConfigurator.configureAndWatch("log4j.xml");,但似乎 Glassfish 正在尝试从${GLASSFISH_HOME}/glassfish/domains/domain1/config我的旧 log4j.xml 文件所在的位置搜索文件以覆盖...所以实际上我的代码从同一个文件加载、重置和重新加载配置...

我只是在寻找一种将 log4j.xml 加载到 EAR 中的方法

感谢您的想法

4

1 回答 1

2

调用getClass().getResourceAsStream("/log4j.xml")JAR/EAR 中的类以读取log4j.xml位于 JAR/EAR 根目录的文件。然后,将结果传递InputStreamDOMConfigurator.doConfigure(InputStream, LoggerRepository)

或者,您可以调用DOMConfigurator. . ,其中返回JAR/EAR 中的对象。configure(getClass()getResource("/log4j.xml"))getClass()Class

于 2012-12-03T18:11:03.120 回答