【问题标题】:Specifying external log4j properties file for one application in JBOSS container为 JBOSS 容器中的一个应用程序指定外部 log4j 属性文件
【发布时间】:2012-09-26 20:49:35
【问题描述】:

我一直在这个房子周围,所以希望能得到一些帮助。我试图让我的应用程序在 JBoss 中部署为一个耳朵,以使用位于应用程序外部的 log4j.properties 文件。在同一个 JBoss 容器中部署了其他应用程序,我不想影响它们。我尝试了多种方法,但无法完全发挥作用。欢迎任何建议。

以下是我尝试过但没有奏效的一些方法:

  1. 将 log4j.properties 添加到 JBoss 类路径。因与JBoss log4j冲突而无法工作,详细here

  2. 通过将-Dlog4j.configuration=file:/C:\.....\log4j.properties 添加到 JBoss 启动脚本,在启动时指定 log4j.properties 文件位置。这不成功,因为它从容器中的其他应用程序中获取了日志语句。

  3. 尝试在 EAR 文件中的 WAR 文件的 web.xml 中指定 log4j.properties 位置,但我在上面第 1 步的链接中得到了同样的错误。

关于如何使它工作的任何想法? JBoss EAP 5.1、Spring 3.1.1、log4j 1.2.16。

【问题讨论】:

    标签: spring logging jboss log4j classloader


    【解决方案1】:

    这是我的做法。在 web.xml 中:

    <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>classpath:log4j.applicationName.properties</param-value>
    </context-param>
    <context-param>
         <param-name>log4jRefreshInterval</param-name>
         <param-value>10000</param-value>
    </context-param>
        <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>
    

    注意使用 log4j.properties 以外的文件名。不知道这是否会减轻您的冲突,但可能会。当然,这个配置的问题是你在启动的前 10 秒内没有日志。这可能很重要。

    【讨论】:

    • 好的,我想我知道为什么我没有得到我的启动顺序。以上需要在 web.xml 中的上下文加载侦听器之前出现,10 秒太长了。我把它改成了 1 秒,现在看起来效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多