3

これについて詳しく説明すると、Java1.6.0_27を実行しているTomcatサーバーバージョン7.0.27があります。

私には2つの戦争があり、それぞれが独自のlog4j jarを持ち、slf4j-log4jとともにslf4jを使用しています。各戦争には、独自の構成ファイル(log4j.xml)があります。

戦争1はファイルlog-1.logを使用し、戦争2はファイルlog-2.logを使用する必要がありますが、どちらもlog-1.logにログインしています。

Tomcatのインストールに他のlog4jjarがないことを確認したので、問題がどこにあるのかわかりません。共有クラスの読み込みもオフにしましたが、違いはありませんでした。私の次のステップは、詳細なクラスローダーロギングをオンにするか、log4jのデバッグを開始することですが、おそらくここの誰かがこれがなぜであるかを知っており、時間を節約できます。これに関するご意見ありがとうございます。

アップデート:

これだと思います。log4jxmlファイルは問題ありません。verbose:classを実行した後、log4j.jarが一度だけロードされ、どちらのWebアプリケーションからもロードされていないことがわかります。

Documentumを使用しています。ライブラリを使用するために必要なランタイムjarがあります。これは、マニフェストファイルを含む空のjarです。マニフェストは瓶の束を指しています。言い換えれば、彼らはmavenを使用していません...とにかく...それらのjarファイルの1つは、Documentumインストールで見つかったlogj4です。したがって、両方のWebアプリがそれを使用しているようです。これが問題だと思います。確認予定...

4

2 に答える 2

1

Documentumのランタイムjarをトップレベルのクラスパスに配置していて、そのランタイムjarがlog4j.jarを参照している場合、ロードされるのは1回だけです。ただし、そのランタイムjarを使用する必要はありません。または、Documentum以外の場合は、Documentum.warでのみ使用できます。

于 2012-08-08T14:27:37.617 に答える
0

あなたはあなたのプロパティファイルを投稿しませんでしたが、私はいくつかの理由を考えることができます:

  1. 異なるファイルに書き込むアペンダーはありません。つまり、log1.logに書き込むにはappender1が必要であり、log2.txtに書き込むにはappender2が必要です。
  2. アペンダーは正しく設定されていますが、両方のアプリケーションが同じロガーを使用しているため、両方とも同じファイルに書き込みます。
  3. 2つのロガーがあり、それぞれに独自のアペンダーがありますが、コードで正しいロガーを初期化していない:

    //there is no logger called com.sample, so it defaults to root logger that has appender that writes to log1.txt    
    Logger logger = Logger.getLogger(com.sample.MyClass.class);
    

プロパティファイルとロガーの初期化コードを投稿すると、より簡単にサポートできるようになります。

于 2012-08-08T10:10:56.910 に答える