log4jを使用してログを監視しているのですが、そこでExceptionが出力されてしまいました。

原因が不明であるため何かよいアドバイスをいただければと思います。

エラーメッセージは以下の通りです。
=================================================================
Exception renaming file C:\logs\server.log to C:\logs\server.bak
プロセスはファイルにアクセスできません。別のプロセスが使用中です。
=================================================================

例外発生時には、大量のデータを処理するという高負荷な状態でした。
そのログを監視中に例外が発生しました。
ただし、例外は処理が半分近く終わった後から発生するようになりました。
処理の最初のほうでは例外は発生しておらず、正常に動作しておりました。

以上。よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:2007/11/13 12:09:27
  • 終了:2007/11/16 18:35:52

回答(2件)

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252007/11/13 12:32:43

ポイント20pt

エラーメッセージを見る限り、単純に C:\logs\server.log ファイルを開いているプロセス(プログラム)が居るからだと思います。

処理が半分近く終わった後から例外が発生するという辺りから予想するに、恐らくログのファイルサイズが一定サイズを超えたらリネームしてログをローテートされる設定になっていて、処理が後半にさしかかる=ログファイルサイズが一定サイズを超えたときにリネームをしようとして失敗しているんじゃないかと考えられます。

もしそうだとしたらログ出力量を減らしたら例外が発生しなくなるんじゃないでしょうか?(ログファイルが一定サイズに達する前に終わるので)


根本的にはlog4jの設定ミスかバグだと思います。

id:m-terada

ご回答ありがとうございます。

申し訳ありませんが、情報が少なかったため追加いたします。

・使用OS: Windows 2000 Advanced Server

・log4j version 1.2.8

・java version 1.4.2_13

・現在稼働中のシステムで、ログローテイトは正常に動作している

・高負荷な状態でエラーが発生

・logファイルを使用している別プロセスは存在しない

リネームでエラーが発生しているということは読み取れるのですが、

これがlog4jのバグであるのか、log4jの設定でこのような現象が起こるのかを知りたいと思っております。

よろしくお願いします。

2007/11/13 16:37:21
id:nexus5615 No.2

nexus5615回答回数6ベストアンサー獲得回数02007/11/13 23:08:59

ポイント50pt

http://java-ja.yoshiori.org/index.php?log4j%E3%81%A8%E6%8E%92%E4...(Win)

プレビューで見るとURLが分断されてしまっているので、リンクのURLの末尾に「(Win)」を足してください。

で、確証は無いですが上記サイトには、Windows版のlog4jにはOSの問題で、質問のような不具合がでるという情報があります。

logbackという代替製品の情報もありますので、参考になるかと思います。

id:m-terada

ご回答ありがとうございます。

log4jのバグという可能性が濃厚ですね。

log4jを別の製品に変更することは出来ないため、他の方法を考えたいと思います。

ありがとうございました。

2007/11/16 18:34:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません