场景如下:我有一个现有的web应用程序,它通过servlet初始化log4j:
<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>com.app.Log4jInitServlet</servlet-class>
<init-param>
<param-name>log4j-init-file</param-name>
<param-value>WEB-INF/classes/log4j.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>不,我想通过在-Dlog4j.configuration=file:/usr/local/log4j.xml JVM中传递的外部文件来覆盖这个初始化: log4j.configuration
当我启动应用程序服务器时,我可以看到外部文件首先被拾取,但随后通过初始化servlet的内部文件将覆盖这些更改。
我的问题是,如何通过某种JVM配置(更好)禁用servlet初始化,而不必修改应用程序web.xml和/或初始化servlet?或者是否有一种方法来指定初始化的顺序?
谢谢
发布于 2015-10-07 20:12:17
log4j不是核心log4j的一部分。我将假设您正在使用教程中建议的init,在这种情况下,https://logging.apache.org/log4j/1.2/manual.html将使用servlet文件参数中指定的任何文件用于init。
我认为,如果不修改web.xml或init,就无法完成这一任务。
https://stackoverflow.com/questions/33001243
复制相似问题