2015-10-07 90 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的