- - PR -
log4jのログが2重に出力される
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-16 11:30
こんにちは。いつもお世話になっております。
今回みなさんに助けていただきたいことがあります。 今log4jのログ出力を練習するための簡単なアプリを作成しているのですが、 ログが2重に出力されてしまい困っています。 解決方法がおわかりの方いましたらお教えいただけるとありがたいです。 ■環境 win2000,commons-logging,log4j-1.2.8,jdk1.4 ■クラス Main log.LogTest log.sublog.LogTest2 ■LogTest,LogTest2のコンストラクタの記述 System.out.println("LogTest");//LogTest2クラスならLogTest2になる log.trace("trace"); log.debug("debug"); log.info("info"); log.warn("warn"); log.error("error"); log.fatal("fatal"); ■log4j.xmlの記述 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender" > <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%t] (%F:%L) - %m%n"/> </layout> </appender> <category name="log"> <priority value="info" /> <appender-ref ref="STDOUT"/> </category> <category name="log.sublog"> <priority value="error" /> <appender-ref ref="STDOUT"/> </category> </log4j:configuration> MainでLogTest,LogTest2をインスタンス化する。 そうすると以下のようなログが出力される。 ■ログ LogTest 2004-07-16 11:05:02,139 INFO [main] (LogTest.java:13) - info 2004-07-16 11:05:02,159 WARN [main] (LogTest.java:14) - warn 2004-07-16 11:05:02,159 ERROR [main] (LogTest.java:15) - error 2004-07-16 11:05:02,159 FATAL [main] (LogTest.java:16) - fatal LogTest2 2004-07-16 11:05:02,169 ERROR [main] (LogTest2.java:15) - error 2004-07-16 11:05:02,169 ERROR [main] (LogTest2.java:15) - error 2004-07-16 11:05:02,169 FATAL [main] (LogTest2.java:16) - fatal 2004-07-16 11:05:02,169 FATAL [main] (LogTest2.java:16) - fatal ここでなぜLogTest2のログが2重に出力されるのかがわからないのです。 そもそもパッケージ全体の出力レベルを設定したあとに、そのパケージ内の個別のクラスに対してレベルを設定できない?? | ||||
|
投稿日時: 2004-07-16 13:24
まず、log ロガーが親、log.sublog ロガーが子という関係です。
子ロガーに対するログは、子自身とその全ての親のアペンダーに 出力されます。 よって、log.sublog ロガーは 2 つの STDOUT アペンダーに出力しています。 要求を満たすには、log.sublog ロガーにアペンダーを指定する必要が無いと思います。 [ メッセージ編集済み 編集者: はしもと 編集日時 2004-07-16 13:25 ] | ||||
|
投稿日時: 2004-07-16 13:36
返答ありがとうございます。 ああ。。なるほど。そういうことだったのですね。 log4j.xmlの記述を以下のようにしたら、2重にログが出力されなくなりました。 期待したとおりの結果です、ありがとうございました。 ■log4j.xml <category name="log"> <priority value="info" /> <appender-ref ref="STDOUT"/> </category> <category name="log.sublog"> <priority value="error" /> </category> | ||||
1
