如何禁用 log4j servlet 初始化?

How can i disable log4j servlet initialization?

场景如下: 我有一个现有的 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>

不,我想通过传入的外部文件覆盖此初始化 log4j.configuration JVM ardument:-Dlog4j.configuration=file:/usr/local/log4j.xml

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

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

谢谢

log4j init servlet 不是核心 log4j 的一部分。我假设您正在使用此处教程中建议的 init servlet https://logging.apache.org/log4j/1.2/manual.html 在这种情况下,您在 servlet 初始化文件参数中指定的任何文件都将用于初始化。

我认为不修改 web.xml 或 init servlet

就无法完成此操作