2015-10-07 56 views
0

的情况如下: 我有一个现有的Web应用程序,它通过一个Servlet初始化的log4j:如何禁用log4j servlet初始化?

<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> 

没有我想通过在log4j.configuration JVM ardument通过外部文件来覆盖这个初始化: - Dlog4j.configuration = file:/usr/local/log4j.xml

当我启动应用程序服务器时,我可以看到外部文件正在被拾取,但通过初始化servlet的内部文件将覆盖更改。

我的问题是如何禁用通过某些JVM参数配置王(最好)的servlet初始化,而不必修改应用程序web.xml和/或初始化servlet? 或者有没有办法指定初始化的顺序?

谢谢

+0

你有机会获得Log4jInitServlet的来源。该命令已经在init servlet中指定 – vvs

+0

不,我没有权限 –

回答

0

log4j init servlet不是核心log4j的一部分。我假定你正在使用在这里教程中提出的init servlet https://logging.apache.org/log4j/1.2/manual.html 在这种情况下,你在servlet init文件参数中指定的任何文件都将用于init。

我不认为你可以做到这一点,而无需修改或者在web.xml或初始化servlet的