当前位置: 首页 > 知识库问答 >
问题:

如何禁用log4j servlet初始化?

陶永望
2023-03-14

场景如下:我有一个现有的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.configurationJVM ardument:-Dlog4j.configuration=file:/usr/本地/log4j.xml

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

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

谢啦

共有1个答案

臧弘和
2023-03-14

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

我认为如果不修改任何一个网站,你都无法做到这一点。xml还是init servlet

 类似资料:
  • 我试图初始化一个< code>constexpr引用,但没有成功。我试过了 但我收到了编译时错误 错误:constexpr变量“z”必须由常量表达式初始化 删除< code>const会导致 错误:将对类型“int”的引用绑定到类型“const int”的值会删除限定符 尽管我感觉< code>constexpr自动暗示变量声明的< code>const。 所以我的问题是: < Li > < co

  • 我有一个非常基本的问题。我需要如何为ArrayList键入parrameters才能在BlueJ中使用代码?我有一个方法如下。

  • 问题内容: 错误 码 问题答案: 您需要初始化 ,如错误消息所示,您仅对其进行了声明。 您需要初始化数组,以便可以 在 开始设置索引 之前 为元素分配正确的内存存储。 __ 如果 仅 声明数组(如您所做的那样),则不会为元素分配内存,而只会分配给的引用句柄,并且尝试在任何索引处初始化变量时都会引发错误。 另外,您也可以在花括号内初始化数组,这样, 相当于

  • 我正在尝试初始化,但它不允许我。我已经能够初始化。

  • 我有个问题. 如何使用我在前面的 StackOverflow 问题中找到的方法初始化 JavaFX 工具包?可以在此处找到该主题:JavaFX 2.1:工具包未初始化 我正在尝试从该线程使用类似于此解决方案的解决方案: 问题:非平凡的Swing GUI应用程序需要运行JavaFX组件。应用程序的启动过程在启动依赖服务层后初始化GUI。 解决方案子类JavaFX应用程序类,并在单独的线程中运行,例如

  • 问题内容: 我想在单个语句(可能包含多个嵌套语句)中声明一个完全填充的地图字段,如下所示: 匿名初始化程序不会这样做,原因与调用返回新填充映射的函数不会这样做的原因相同:匿名初始化程序需要两个顶级语句:一个用于变量声明,一个用于方法或初始化器。 双花括号(和)惯用语可以工作,但是它创建了一个Extended的新类,而我不喜欢由此表示的开销。 Java 8的lambda也许提供了一种更好的方法来实现