- - PR -
log4jの使用方法について
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 上記のコンソール出力?の定義をするとフリーズしてしまうようです。 この設定をしなければ、フリーズすることなくプロセスが正常終了します。 ただ、なぜフリーズする要因となってしまうのかが分かりません。 |
|
投稿日時: 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