- - PR -
ログ出力の質問です
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-05-11 23:27
こんにちは.
業務でJAVA開発を始めたばかりの初心者です. よろしくお願いします. 質問はログ出力です. これまではバッチ(C言語)で多重走行のない(同時に走行するアプリは1つだけ) アプリ開発をやっていました. そこでは,多重走行がないので,普通に追加モードで開いたファイルポインタに, fprintf や fputs で書込む方法,あるいは Soralis のときは logger 関数で ログ出力をやっていました. 今回,開発するJAVA開発では多重走行がある(同時に複数のアプリが走行)バッチと, オンライン開発があります.ログは同一ファイルに書込む使用となっているのですが, ログ出力の際に特に留意する点はあるのでしょうか. 排他とかは考えずに,普通にファイルを開いて書込んでいった場合の弊害があるのでしょうか. JAVA1.4 では logging パッケージとかいうものもあるようですが,JAVA1.3 以前での方法を 指南お願いします. |
|
投稿日時: 2002-05-12 01:24
log4jがあります。
http://www.ingrid.org/jajakarta/log4j/ |
|
投稿日時: 2002-05-12 21:36
ありがとうございます.
ドキュメントもダウンロードしたので,職場で試してみます. ところで,ログレベルや初期の設定は別として,単にログのファイル書込みの点だけで 考えたとき,あるアプリが書込みモードでファイルをつかんでいるとき, 別のアプリがそのファイルを書込みモードで開くとき,あるいは書込むときに何らかの 弊害はあるのでしょうか. 何も弊害がないのなら,オープン(追加モード)→書込み→クローズのログ出力メソッドを 作っても問題ないのでしょうか. 実際には,他の設定の問題もあるのでlog4jを使うのですが,JAVAに限らず複数アプリが 同時する環境でのログ出力が初めてで気になったものですから. 初歩的な質問かと思いますが,宜しくお願いします. |
|
投稿日時: 2002-05-13 06:42
JDK1.4のLoggingパッケージをJDK1.2、JDK1.3でも使えるように進められている
Lumberjackプロジェクトというものがあります。 http://yamaguch.sytes.net/~tora/java/logging.xtp |
|
投稿日時: 2002-05-13 09:14
せっかく紹介したのですから、ドキュメントを読んでください。
http://www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs-ja/FAQ.html#thread-safety |
|
投稿日時: 2002-05-24 23:39
質問しといて回答してませんでした.すみません.
私自身は,教えていただいた log4j のドキュメントだけ探して, 後輩に渡していたのですが,どうも作業が思わしくないです… 明日後輩から状況を聞いてみるのですが, java アプリからは正しく log 出力されてるらしく,それが Servlet + Beans の構成で Beans から log 出力したいのですが, それができないとか言ってました. javaアプリからの log 出力と違って,特に留意する点など あるのでしょうか. きちんと説明してなくて申し訳ありませんが,何か思い当たるものが あればよろしくお願いします. |
|
投稿日時: 2002-05-25 00:14
たいきさん: >多重走行がある(同時に複数のアプリが走行) そのシステムはシングルスレッド・マルチプロセスでしょうか? それとも、マルチスレッド・シングルプロセスでしょうか? バッチの方はシングルスレッド・マルチプロセスで、オンライン の方はマルチスレッド・シングルプロセスのように思えるのですが。 log4jはマルチスレッドに対応しているので、オンラインの単一 アプリケーションの中で複数のスレッドが平行して書き込むのは安 全です。一方、複数のアプリケーションが書き込む場合はスレッド 間のロックとは別な注意が必要です。 log4jに、わざわざSocketAppenderが用意されているのを見ると、 やはり一つのファイルへ複数プロセスが書き込むのは、設計として よろしくないようです。 |
|
投稿日時: 2002-05-25 02:54
> log4jに、わざわざSocketAppenderが用意されているのを見ると、
> やはり一つのファイルへ複数プロセスが書き込むのは、設計として > よろしくないようです。 いや、もともと、複数のJVMプロセスを考慮して設計はされていないのでは... それは、JDK1.4 の Logging パッケージでも同様でしょう。 |