为JBOSS容器中的一个应用程序指定外部log4j属性文件

时间:2012-10-05 16:46:37

标签: spring logging jboss log4j classloader

我一直在这个房子周围,所以会很感激一些帮助。我试图让我的应用程序(在JBoss中作为一个耳朵部署)使用位于应用程序之外的log4j.properties文件。在同一个JBoss容器中部署了其他应用程序,我不想影响它们。我已经尝试了很多方法,但不能完全实现它。欢迎任何建议。

以下是我尝试过的一些没有效果的事情:

  1. 在JBoss类路径中添加了log4j.properties。由于与JBoss log4j发生冲突而无效,详细here

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

  3. 尝试在EAR文件的WAR文件的log4j.properties中指定web.xml位置,但我在上面的步骤1中的链接中详细说明了相同的错误。

  4. 有关如何使这项工作的任何想法? JBoss EAP 5.1,Spring 3.1.1,log4j 1.2.16。

1 个答案:

答案 0 :(得分: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秒没有得到日志。这可能很重要。