- PR -

log4jの使用方法について

1
投稿者投稿内容
じゃばジャバ
会議室デビュー日: 2006/03/15
投稿数: 1
お住まい・勤務地: 日本
投稿日時: 2006-03-15 11:49
はじめまして。
log出力の影響によるもの?と思われプロセスがフリーズして困っています。皆さんのお力を貸して頂ければと思い投稿してみました。
javaは素人ですので、間違った表現をしているかもしれませんが宜しくお願いします。

今回、ログ出力(log4j)を入れてみましたが、行数=84行、サイズ=9294byteの出力まで正常で、その後、プロセスがフリーズしたような状態となりました。プロセスの起動方法としましては、RMIを使用してあるタイミングでプロセスAが処理し、処理が完了したらプロセスBを起動するといったものであり、プロセスAに関しては問題ありませんが、プロセスBがフリーズとなります。
単独でプロセスBを起動するとフリーズすることなく処理が正常に終了します。
あと、優先度の定義をDEBUGとするとフリーズし、WARNだと正常に終了します。
このことから、RMIを使用した際にLOG出力の制限のようなものがあるのでしょうか?

【プロセスBの一部】
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;


public class processB {
 private static final Logger logger = Logger.getLogger("myLogger");

 public static void main(String[] args) {

  PropertyConfigurator.configure("m1g_history_log4j.properties");

logger.info("==== 処理開始 ====");

(debug、error等有り)

 }
}

【propertiesファイルの中身】
log4j.rootCategory=debug, stdout, m1gfile
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m [%t] (%F:%L)%n

### direct messages to file mylog.log ###
log4j.appender.m1gfile=org.apache.log4j.RollingFileAppender
log4j.appender.m1gfile.File=processB.log
log4j.appender.m1gfile.Append=true
log4j.appender.m1gfile.MaxFileSize=1MB
log4j.appender.m1gfile.MaxBackupIndex=3
log4j.appender.m1gfile.layout=org.apache.log4j.PatternLayout
log4j.appender.m1gfile.layout.ConversionPattern=%d %5p %c{1} - %m [%t] (%F:%L)%n

log4j.logger.myLogger=debug
#log4j.logger.net.sf.hibernate=info

また、その後の調査して分かったことですが、
> 【propertiesファイルの中身】
> log4j.rootCategory=debug, stdout, m1gfile
> ### direct log messages to stdout ###
> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
> log4j.appender.stdout.Target=System.out
> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
> log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m [%t] (%F:%L)%n

上記のコンソール出力?の定義をするとフリーズしてしまうようです。
この設定をしなければ、フリーズすることなくプロセスが正常終了します。
ただ、なぜフリーズする要因となってしまうのかが分かりません。


山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-15 11:56
デッドロックしたときはひとまずスレッドダンプをとってみましょう。
Windowsなら DOS プロンプトで ctrl+break
Unix なら kill -3 pid です。
スレッドダンプの読み方はこちらで。
・パフォーマンス・チューニング ガイド - (付録E)Java スタックトレースによるリソース競合検出
http://www1.jpn.hp.com/products/software/development/java/tips/tune/p23.html
解析は侍とかで
・侍
http://yusuke.homeip.net/samurai/index.html
1

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