1

Websphere7 を使用して EAR ファイルをデプロイしています。EAR ファイルには、App1、App2 などの 2 つの異なるアプリケーション war ファイルが含まれています。

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

異なる戦争の 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>

ロギングに関連する問題に直面しています。アプリケーションの起動時に、2 つの異なるログ ファイル (app1.log と app2.log) が適切に作成されます。ただし、異なるアプリケーションのログは 1 つのログ ファイルになります。

何か不足していますか?助言がありますか?

4

1 に答える 1

0

最後に、この問題の解決策を見つけました。答えを得るには、以下のリンクを参照してください。

このソリューションの実装中に、すべてのクラスの静的 Logger 変数がログのマージの問題を引き起こしていることがわかりました。これは、この問題に関する適切な説明です。これを読んだ後、すべての静的 Logger をクラス レベルのインスタンス変数に変換する必要がありました。

から

プライベート静的最終ロガー LOGGER = Logger.getLogger(MyApp.class);

プライベート最終ロガー LOGGER = Logger.getLogger(MyApp.class);

上記の変更を行った後、ロギング フレームワークが正常に機能し始めました。これで、すべてのログ ファイルに Web アプリ固有のログが含まれていることがわかります。

この問題の詳細な分析を取得したい場合。この投稿を参照できます。

于 2014-04-01T09:11:13.693 に答える