目次へ

2. 設定ファイルの利用

2.1. 設定ファイルの書き方

第1章ではログの出力方法を直接プログラムソースに書いて、ログ出力を制御する方法を説明しました。この方法では、ログ出力レベルの変更や出力フォーマットの変更の度に、ソースを書き換えコンパイルする必要があります。Log4J には設定ファイルに制御方法を書いておく方法が提供されていますので、より柔軟な設定ができます。実際には設定ファイルを利用する方法が主流だと思われます。

設定ファイルには「key=value」の形式で記述します。またコメント行の行頭には # または ! を使用します。

Logger の設定

ログ出力レベルの設定と使用する Appender の名前を設定します。この段階では、Appender は名前だけで構いません。また、Appender は複数設定することが出来ます。 既に RootLoggerで優先度が設定されている場合は、それを継承することができます。その場合は、ログ出力レベルを設定するところに INHERITED と書きます。

# RootLogger
log4j.rootLogger=(ログ出力レベル),appenderName1,appenderName2,...

# Logger
log4j.logger.logger_name=[ログ出力レベル|INHERITED], appenderName1, appenderName1, ...

sampleLogger という名前の Logger にログ出力レベルが ERROR で、A1 という名前の Appender を設定する場合は次のように書きます。

# sampleLogger
log4j.logger.sampleLogger=ERROR,A1

APPENDERの設定

Logger の設定のところで名前だけ設定した Appender の設定を行います。使用する Appender とそのオプションの値を設定することができます。

# 使用するAPPENDERの設定
log4j.appender.appender_name=appender_class_name
# オプションの設定
log4j.appender.appender_name.option1=value1
....
log4j.appender.appender_name.optionN=valueN

次のサンプルは名前が A1 の Appender に ConsoleAppender を設定し、PatternLayout を使用しています。

# APPENDER の設定
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# PatternLayoutの設定
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n

2.2. 設定ファイルの利用

設定ファイルを使用するには、org.apache.log4j.PropertyConfigurator クラスを使用します。クラスメソッドconfigure( ) メソッドで設定ファイルを読み込みます。

 ...(略)
          Logger logger= Logger.getLogger(Log4jSample.class.getName());
          PropertyConfigurator.configure(args[0]);
 
          logger.debug("debug!!!");
          logger.info("info!!!");
          logger.warn("warn!!!");
          logger.error("error!!!");
          logger.fatal("fatal!!!");
...(略)

(実習課題1)

ログ出力レベルが DEBUG と FATAL の Category オブジェクトを生成し、ログを出力するプログラムを作成しなさい。

  • Category オブジェクトのログ出力レベルは設定ファイルに記述すること。
  • Appender と Layout も設定ファイルに記述すること。
  • Appender は ConsoleAppender を使用すること。
  • Layout は PatternLayout を使用すること。
  • ログの出力は、それぞれの Category オブジェクトについて、 全てのログイベントを発生させること。
  • 出力したログが、どちらの Category オブジェクトによるものかわかるようにしておくこと。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp