1

我正在使用 Websphere7 来部署 EAR 文件。EAR 文件包含两个不同的应用程序战争文件,如 App1、App2。

我正在使用 maven-ear-plugin 作为瘦战争构建我的应用程序 EAR 文件。

.
 |-- META-INF
 |   `-- application.xml
 |-- lib
 |    -- jar1
 |    -- jar2
 |    -- jar3
 |    -- log4j.jar
 |-- App1-1.0.0.war
 |     -- /WEB-INF/classes/App1-log4j.xml     |     
 `-- App2-1.0.0.war
 |     -- /WEB-INF/classes/App2-log4j.xml

不同Wars的Web.xml配置

App1-1.0.0.war:Web.xml

<context-param>
            <param-name>log4jExposeWebAppRoot</param-name>
            <param-value>false</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/App1-log4j.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

App2-1.0.0.war:Web.xml

 <context-param>
                <param-name>log4jExposeWebAppRoot</param-name>
                <param-value>false</param-value>
        </context-param>

        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>/WEB-INF/classes/App2-log4j.xml</param-value>
        </context-param>

        <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>

我面临与日志记录相关的问题。应用程序启动时会正确创建两个不同的日志文件(app1.log 和 app2.log)。但是不同应用程序的日志将写入单个日志文件。

我错过了什么吗?有什么建议么?

4

1 回答 1

0

最后,我得到了解决这个问题的方法。要获得答案,请参阅以下链接。

在实施此解决方案期间,我观察到所有类中的静态 Logger 变量都会导致日志合并问题。是关于这个问题的很好的解释。读完这篇文章后,我不得不将所有静态 Logger 转换为类级别的实例变量。

private static final Logger LOGGER = Logger.getLogger(MyApp.class);

私有最终记录器 LOGGER = Logger.getLogger(MyApp.class);

在进行了上述更改后,日志框架开始对我正常工作。现在,我可以看到我的所有日​​志文件都包含特定于 Web 应用程序的日志。

如果你想得到关于这个问题的详细分析。你可以参考这篇文章

于 2014-04-01T09:11:13.693 回答