- - PR -
Loggerを用いたログファイルの出力
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-25 09:38
ログ出力について困っています。
質問内容に不手際があるかもしれませんが、 ご教授願います。 現在java.util.logging.Loggerを用いてロギングするようにしています。 ログ出力の設定はアプリの起動時に一度だけ行っています。 logger = Logger.getLogger(); logger.addHandler(); アプリをひとつだけ起動する分にはいいのですが、 アプリを多重起動すると、どうしても 追番がついたログファイルが出力されてしまいます。 【状況】 アプリA起動⇒log.log出力 アプリA起動⇒log.log0出力 アプリA起動⇒log.log1出力・・・・・ ログファイルの重複使用を避けるために 追番「"%u" 」がつくのは理解できるのですが・・ 同じアプリからは一意のログファイルを使用する方法は無いのでしょうか? よろしくお願いします。 ちなみに、初回起動時に、 fh = new FileHandler(); logger.addHandler(fh); すると、ログファイル+ロックファイルが生成され、ロックファイルが 削除されずにずっと残ってしまうことにも困っています。 | ||||
|
投稿日時: 2008-01-25 15:11
> アプリを多重起動すると
別々のJavaVMのプロセスを起動するということでしょうか。 一つのJavaVMで複数のアプリケーショーンセッションを提供する。 プロセス間通信を行って、一つのloggerを利用する。 syslogなどのログサービスを利用する。 参考:log4jについて | ||||
|
投稿日時: 2008-01-25 22:47
環境はJDK1.4系でしょうか? ロックファイルが削除されないのは JDK1.4のBugです。 JDK1.5でFixしました。 参考 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4775533 | ||||
|
投稿日時: 2008-01-30 14:16
返信遅くなり大変申し訳ありませんでした。
■Rayさん、回答ありがとうございます。 >別々のJavaVMのプロセスを起動するということでしょうか。 はい、その通りです。 >プロセス間通信を行って、一つのloggerを利用する。 ・・難しそうですね・・・ とりあえず、ログを出力するたびに、 fh = new FileHandler(); logger.addHandler(fh); fh.flush(); fh.close(); を行うようにして、ログファイルのロックを回避しました。 ■suiさん、回答ありがとうございます。 >環境はJDK1.4系でしょうか? はい。バグだったのですか!? スミマセン。単なる知識不足でした・・・・ 初回にこのゴミロックファイルを削除するようにします・・・ 回答ありがとうございました。 いつも親切に回答してくれる方がいるので、 とても感謝しています。 以上 |
1