1

1 つのバッチ アプリケーションを 3 つの異なるアプリケーションに分割する必要があります。コードはほぼ同じです。ANT ビルド スクリプトを変更し、別のアプリの依存関係を除外または含めました。戦争ごとに異なる web.xml を設定しました。各 web.xml は、さまざまな動作のさまざまな Bean を使用して、さまざまな Spring アプリケーション コンテキストを定義します。

すべての戦争は 1 つの tomcat サーバーで実行されます。アプリケーションは log4j を使用していましたが、代わりに slf4j を使用するようにリファクタリングしました。slf4j の下で log4j を使用する必要があると思いました。

私が抱えている問題は、クラス名が同じであっても、各アプリケーション ログが異なるログ ファイルに表示される必要があることです。

  • 管理者がすべてのアプリケーションの tomcat/lib フォルダーに配置したため、別の log4j.properties ファイルを書き込むことができません。
  • tomcat/lib に 3 つのファイルを配置し、サーブレットの初期化時にアプリケーションごとに構成ファイル名を変更しようとしましたが、すべてのアプリケーションで同時に変更されました。

今考えられる唯一の解決策は、log4j-over-slf4j をラップし、3 つの異なる slf4j ログ ファクトリを作成して、各ログ名にプレフィックスを追加することです。たとえば、次のログがあるとします。

 private final Logger logger = LoggerFactory.getLogger(MainProcessor.class);

各ログ ファクトリは、これらのログ名を生成します (プレフィックス app1、app2、および app3 を使用)。

app1.com.test.MainProcessor
app2.com.test.MainProcessor
app3.com.test.MainProcessor

この問題に対処するより良い方法はありますか?

4

1 に答える 1