- PR -

ログ出力の質問です

投稿者投稿内容
たいき
会議室デビュー日: 2002/05/11
投稿数: 14
投稿日時: 2002-05-11 23:27
こんにちは.
業務でJAVA開発を始めたばかりの初心者です.
よろしくお願いします.

質問はログ出力です.
これまではバッチ(C言語)で多重走行のない(同時に走行するアプリは1つだけ)
アプリ開発をやっていました.
そこでは,多重走行がないので,普通に追加モードで開いたファイルポインタに,
fprintf や fputs で書込む方法,あるいは Soralis のときは logger 関数で
ログ出力をやっていました.

今回,開発するJAVA開発では多重走行がある(同時に複数のアプリが走行)バッチと,
オンライン開発があります.ログは同一ファイルに書込む使用となっているのですが,
ログ出力の際に特に留意する点はあるのでしょうか.
排他とかは考えずに,普通にファイルを開いて書込んでいった場合の弊害があるのでしょうか.
JAVA1.4 では logging パッケージとかいうものもあるようですが,JAVA1.3 以前での方法を
指南お願いします.
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-05-12 01:24
log4jがあります。
http://www.ingrid.org/jajakarta/log4j/
たいき
会議室デビュー日: 2002/05/11
投稿数: 14
投稿日時: 2002-05-12 21:36
ありがとうございます.
ドキュメントもダウンロードしたので,職場で試してみます.
ところで,ログレベルや初期の設定は別として,単にログのファイル書込みの点だけで
考えたとき,あるアプリが書込みモードでファイルをつかんでいるとき,
別のアプリがそのファイルを書込みモードで開くとき,あるいは書込むときに何らかの
弊害はあるのでしょうか.
何も弊害がないのなら,オープン(追加モード)→書込み→クローズのログ出力メソッドを
作っても問題ないのでしょうか.
実際には,他の設定の問題もあるのでlog4jを使うのですが,JAVAに限らず複数アプリが
同時する環境でのログ出力が初めてで気になったものですから.
初歩的な質問かと思いますが,宜しくお願いします.
asip
ベテラン
会議室デビュー日: 2001/12/27
投稿数: 77
投稿日時: 2002-05-13 06:42
JDK1.4のLoggingパッケージをJDK1.2、JDK1.3でも使えるように進められている
Lumberjackプロジェクトというものがあります。
http://yamaguch.sytes.net/~tora/java/logging.xtp
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-05-13 09:14
せっかく紹介したのですから、ドキュメントを読んでください。
http://www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs-ja/FAQ.html#thread-safety
たいき
会議室デビュー日: 2002/05/11
投稿数: 14
投稿日時: 2002-05-24 23:39
質問しといて回答してませんでした.すみません.
私自身は,教えていただいた log4j のドキュメントだけ探して,
後輩に渡していたのですが,どうも作業が思わしくないです…
明日後輩から状況を聞いてみるのですが,
java アプリからは正しく log 出力されてるらしく,それが
Servlet + Beans の構成で Beans から log 出力したいのですが,
それができないとか言ってました.
javaアプリからの log 出力と違って,特に留意する点など
あるのでしょうか.
きちんと説明してなくて申し訳ありませんが,何か思い当たるものが
あればよろしくお願いします.
へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2002-05-25 00:14

たいきさん:
>多重走行がある(同時に複数のアプリが走行)

 そのシステムはシングルスレッド・マルチプロセスでしょうか?
 それとも、マルチスレッド・シングルプロセスでしょうか?
 バッチの方はシングルスレッド・マルチプロセスで、オンライン
の方はマルチスレッド・シングルプロセスのように思えるのですが。
 log4jはマルチスレッドに対応しているので、オンラインの単一
アプリケーションの中で複数のスレッドが平行して書き込むのは安
全です。一方、複数のアプリケーションが書き込む場合はスレッド
間のロックとは別な注意が必要です。
 log4jに、わざわざSocketAppenderが用意されているのを見ると、
やはり一つのファイルへ複数プロセスが書き込むのは、設計として
よろしくないようです。
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2002-05-25 02:54
>  log4jに、わざわざSocketAppenderが用意されているのを見ると、
> やはり一つのファイルへ複数プロセスが書き込むのは、設計として
> よろしくないようです。
いや、もともと、複数のJVMプロセスを考慮して設計はされていないのでは...
それは、JDK1.4 の Logging パッケージでも同様でしょう。

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