- PR -

Loggerを用いたログファイルの出力

1
投稿者投稿内容
ビーンズ
常連さん
会議室デビュー日: 2007/10/02
投稿数: 20
投稿日時: 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);
すると、ログファイル+ロックファイルが生成され、ロックファイルが
削除されずにずっと残ってしまうことにも困っています。
Ray
ベテラン
会議室デビュー日: 2007/09/13
投稿数: 88
投稿日時: 2008-01-25 15:11
> アプリを多重起動すると

別々のJavaVMのプロセスを起動するということでしょうか。
一つのJavaVMで複数のアプリケーショーンセッションを提供する。

プロセス間通信を行って、一つのloggerを利用する。

syslogなどのログサービスを利用する。

参考:log4jについて
sui
会議室デビュー日: 2005/11/18
投稿数: 7
お住まい・勤務地: 大坂
投稿日時: 2008-01-25 22:47
引用:

ビーンズさんの書き込み (2008-01-25 09:38) より:

ちなみに、初回起動時に、
fh = new FileHandler();
logger.addHandler(fh);
すると、ログファイル+ロックファイルが生成され、ロックファイルが
削除されずにずっと残ってしまうことにも困っています。



環境はJDK1.4系でしょうか?

ロックファイルが削除されないのは
JDK1.4のBugです。
JDK1.5でFixしました。

参考
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4775533
ビーンズ
常連さん
会議室デビュー日: 2007/10/02
投稿数: 20
投稿日時: 2008-01-30 14:16
返信遅くなり大変申し訳ありませんでした。

 ■Rayさん、回答ありがとうございます。

>別々のJavaVMのプロセスを起動するということでしょうか。
 はい、その通りです。

>プロセス間通信を行って、一つのloggerを利用する。
 ・・難しそうですね・・・
 とりあえず、ログを出力するたびに、
  fh = new FileHandler();
  logger.addHandler(fh);
  fh.flush();
  fh.close();
 を行うようにして、ログファイルのロックを回避しました。

 ■suiさん、回答ありがとうございます。

>環境はJDK1.4系でしょうか?
 はい。バグだったのですか!?
 スミマセン。単なる知識不足でした・・・・
 初回にこのゴミロックファイルを削除するようにします・・・
 

回答ありがとうございました。
いつも親切に回答してくれる方がいるので、
とても感謝しています。
以上
1

スキルアップ/キャリアアップ(JOB@IT)