1

私はこれで家を回ってきたので、助けていただければ幸いです。log4j.propertiesアプリケーションの外部にあるファイルを使用するために、JBoss の ear としてデプロイされたアプリケーションを取得しようとしています。同じ JBoss コンテナーにデプロイされた他のアプリケーションがあり、それらに影響を与えたくありません。私は多くのアプローチを試みましたが、うまく機能させることができません。どんなアドバイスでも大歓迎です。

以下は、私が試した中でうまくいかなかったもののいくつかです。

  1. JBoss クラスパスに log4j.properties を追加しました。JBoss log4j との競合が原因で機能しませんでした。 詳細はこちら.

  2. JBoss 起動スクリプトに追加することにより、起動時に指定log4j.propertiesされたファイルの場所。-Dlog4j.configuration=file:/C:\.....\log4j.propertiesこれは、コンテナー内の他のアプリケーションからログ ステートメントを取得したため、失敗しました。

  3. EAR ファイルで WAR ファイルのlog4j.properties場所を指定しようとしましたが、上記のステップ 1 のリンクに詳細が記載されている同じエラーが発生しました。web.xml

これを機能させる方法についてのアイデアはありますか? JBoss EAP 5.1、Spring 3.1.1、log4j 1.2.16。

4

1 に答える 1

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 秒間はログが取得されないことです。それは重要なことかもしれません。

于 2013-03-04T18:32:35.443 に答える