2

同じサーバー上で3つの別々のプロセスとして実行されるJavaプログラムがあります。すべてのプロセスで単一のログファイルを共有したいのですが、logging.propertiesファイルでそれを指定する方法はありますか?ロギングを処理するためにjava.util.loggingを使用しています。

現在、logging.propertiesファイルでFileHandlerを定義する方法は次のとおりです。

java.util.logging.FileHandler.pattern =%h / log / logfile.log

これは、プログラムの1つのインスタンスでは正常に機能しますが、プログラムの3つの別々のインスタンスを開始しようとすると、結果は次のようになります。

logfile.log logfile.log.1 logfile.log.2

これについて何かアドバイスはありますか?

ありがとうございました

4

4 に答える 4

3

ログバックは別のロガーですが、それはあなたのケースをサポートします。

ドキュメントから:http://logback.qos.ch/manual/appenders.html

FileAppenderの慎重なモードを確認してください

于 2011-05-17T18:40:18.847 に答える
0

異なるプロセス(異なるJVM)から同じファイルに書き込むことはお勧めしません。

それを行う唯一の安全な方法は、ファイルをロックし、開いて、書き込み、そして閉じることです。これにより、各書き込みが大幅に遅くなり、一般的にロガーには受け入れられないと見なされます。本当にこの方法を使いたい場合は、いつでも独自のハンドラーを作成できます。

于 2011-05-17T18:16:41.507 に答える
0

私は2番目のJavaプログラムであるロガーを作成します。他のプロセスにログメッセージをログプログラムに送信させ、ログプログラムは単一のログファイルに書き込みます。ソケットを使用してプログラム間で通信できます。 これを行う方法の例を次に示します。

ポール

于 2011-05-17T18:23:31.483 に答える
0

Paulの答えを詳しく説明すると、SocketHandlerを使用して、すべてのプロセスからのログイベントを、実際にファイルに書き込む単一のプロセスに転送できます。

ほとんどのログパッケージは、この機能の簡単な実装を提供します。もう1つの広くサポートされているオプションは、システムのログ機能(Windowのイベントログまたはsyslogd)との統合です。

于 2011-05-17T18:40:09.950 に答える