0

log4jロギングフレームワークを使用するJavaアプリケーションがあります。私のアプリケーションにはいくつかのモジュールがあり、各モジュールは独自のログファイルを作成します。コマンドラインからアプリケーションを起動し、実行するモジュールをアプリケーションに指示するパラメーターを渡します。モジュールが3つあるとすると、1つのモジュールを開始するたびに、3つのログファイルがすべて作成されますが、情報が入力されるのは1つだけです(開始したモジュールの1つ)。各ファイルアペンダーをに設定しました

...append = false

そのため、アプリケーションを起動するたびに、古いログデータのない新しいログファイルがあります。

これで、プロセスチェーンを作成するバッチファイルができたので、3つのモジュールすべてがバッチファイル内で次々に呼び出されます。しかし、問題は次のとおりです。最後に、最初の2つのモジュールのログファイルが空になり、最後のモジュールのみがログを正しいログファイルに保存します(もちろん、それぞれの追加オプションをfasleに設定したため、これはそのようにする必要がありますファイルアペンダー)

次の解決策を探しています。モジュールを起動するときに、このモジュールのログファイルが空かどうかを確認したいと思います。はいの場合は、ログデータをこのファイルに追加するだけです。ファイルにすでにデータがある場合は、コンテンツを削除して現在のログデータを保存します。したがって、最後に3つのモジュールすべてを呼び出すとき(毎回異なるパラメーターを使用してアプリケーションを3回起動する)、3つのログファイルすべてを埋めたいと思います。何か案は?

4

2 に答える 2

0

私が正しく理解していれば、RollingFileAppenderはモジュールごとに3つのログファイルを作成します(3つのモジュールを開始すると仮定します)。したがって、適切なログファイルを括弧で囲んだ次のモジュールがあるとします。

Module 1: -import (import.log)
Module 2: -parsing (parsing.log)
Module 3: -deletion (deletion.log)

モジュラー1を開始した後、次のファイルとそのサイズが表示されます。

import.log (size >0)
parsing.log (empty)
deletion.log (empty)

現在、2番目のモジュラスを開始した後、次のようになります。

import.log (empty)
parsing.log (size >0)
deletion.log (empty)

RollingFileAppenderを使用すると、2番目のモジュールを開始した後に次のようになります。

import1.log (empty)
import.log (size >0)
parsing1.log (empty)
parsing.log (size >0)
deletion.log (empty)

しかし、利用可能な3つのモジュールのうち2つを開始した後、次のものが必要です。

import.log (size >0)
parsing.log (size >0)
deletion.log (empty)
于 2012-08-23T11:49:35.403 に答える
0

プログラムモジュールを実行するたびに、新しいログファイルが必要です。

RollingFileAppenderの使用を検討しましたか? 新しいログ ファイルを作成するために、プログラムの最初にRollingFileAppender使用する設定を行ってください。appender.rollOver();古いログ ファイルを削除して、多数の古いログ ファイルを保持するように構成できますappender.setMaxBackupIndex(int)。これにより、ファイルの管理がフレームワークに委任されます。

別の方法は、DailyRollingFileAppenderを使用することです。ファイルがロールオーバーする時間間隔を設定できます。

于 2012-08-23T11:11:37.107 に答える