電子書籍の厳選無料作品が豊富!

次のようなLOG4jの設定ファイルからログレベルを取得したいのですが
うまく取得できません。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 一般ログファイル出力 -->
<appender name="LogFile" class="org.apache.log4j.FileAppender">
<param name="File" value="c:/TestLog4j.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m (%F:%L) %c[%t]%n"/>
</layout>
</appender>
<!-- 一般ログ出力設定 -->
<logger name="clip">
<level value="DEBUG"/>
<appender-ref ref="LogFile"/>
</logger>
</log4j:configuration>

JAVAのソースは
//ログ4j設定ファイル読み込み
DOMConfigurator.configure("c:/log4j.xml");
//ロガーの取得
Logger batchLog = Logger.getLogger(getClass());
//テストログの出力
batchLog.fatal("テスト");
//ログレベルの取得
Level logLevel = batchLog.getLevel();
System.out.println(logLevel);   // 結果:null
System.out.println(logLevel.toString()); // NullPointerExceptionでエラー

テストログは出力できるのですが、ログレベルの取得で
エラーになってしまいます。

log4jの設定ファイルからログレベルを取得するにはどうすれば
良いのでしょうか?

A 回答 (1件)

<!-- 一般ログ出力設定 -->


<logger name="clip">
> Logger batchLog = Logger.getLogger(getClass());

呼び出し側JAVAのクラス名が`clip`になっていない為
NullPointerExceptionが出ていると思われます。
JAVAでのLOGGER、CATEGORYの指定方法の誤りです。


Logger#getLoggerの引数には、クラスも指定できますが、
個人的には文字列を指定した方がやりやすいかな…と。


▼以下、LOG4J 1.2.13にて確認済み

ちなみに、log4j.xml をこのように記述した場合
----------------------------------------
<logger name="SYSTEM">
 <level value="DEBUG"/>
 <appender-ref ref="LogFile"/>
</logger>
----------------------------------------
または
----------------------------------------
<category name="SYSTEM">
 <priority value="DEBUG" />
 <appender-ref ref="LogFile"/>
</category>
----------------------------------------

JavaでLoggerを取得する際こんな感じに引数を指定すれば、
普通にgetLevel()が使用できると思います。

Logger batchLog = Logger.getLogger("SYSTEM");
    • good
    • 0
この回答へのお礼

解決できました。

確認までして頂き、ありがとうございました。
助かりました。

お礼日時:2007/03/14 10:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!