• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaでlog4jを使ってログを出力させてます。)

Javaでlog4jを使ってログを出力する際に、ログローテーションでエラーが発生する理由を教えてください

このQ&Aのポイント
  • Javaでlog4jを使用して複数のログを出力する際に、同一propertiesに複数のAppenderを定義する方法を使用しています。
  • ログの出力先(ファイル)は、プロセスごとに異なる設定をしています。
  • ログローテーション時に「log4j:ERROR Failed to rename」のエラーが発生し、ローテーションが正常に行われません。ログローテーション時に他のプロセスで出力するファイルをロックしてしまっている可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おっしゃるように、同一propertiesに3プロセス分の定義を書いているのが原因です。 processAのpropertiesファイルにはprocessAのログ出力設定だけを、同様にprocessB、processCはそれぞれそのプロセスで出力したいログ出力設定だけを書いてください。 Log4Jは複数プロセスで同一ファイルにログ出力すると不具合が発生します。 どうしても同一propertiesに設定をまとめたい、という場合はプロセスごとに出力先のファイルパスをシステムプロパティで設定し、Log4Jからシステムプロパティから出力先を参照することで、出力先を切り替えることもできます。 下記を参照してみてください。 ファイルパスなどを外出しする http://www.masatom.in/pukiwiki/Java/Log4j/

yoshi5570
質問者

お礼

情報ありがとうございました。 同一propertiesに設定を纏めたい場合、 プロセス毎にシステムプロパティを介して設定すれば出来るとの事でしたが、 当該プロセス以外のファイルは、0kbのファイルが意図しないフォルダに作成されたり、 今まで通りリネームエラーが発生したりでうまくいきませんでした。 (単に私のやり方が悪かったせいかもしれませんが) 今のところ、 1つのプロセス毎に1つのpropertiesを設定するしかないのかなーと思っています。

関連するQ&A