目次へ

8. 設定ファイルの利用2

第2章ではログの出力方法を設定ファイルで指定する方法を、PropertyConfigurator クラスを利用する場合について説明しました。設定ファイルを利用すると、出力 Layout の変更や優先度の設定などが、プログラムをコンパイルすることなく行えるので大変便利です。しかし、この場合の設定ファイルの書き方は、java.util.Properties を利用した書き方ですので、JAVA の世界だけに通用するフォーマットです。より一般的で、わかりやすいフォーマットを利用するために、Log4J には xml 形式で設定ファイルを書く方法が提供されています。

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

設定ファイルの書き方は log4j.dtd に定められています。log4j.dtd は Log4J のパッケージに含まれています。

log4j.dtd に従うと、設定ファイルのツリー構造は右下図のように表すことができます。図中の「*」は何度出現してもよいことを表します。出現しなくても構いません。また「?」は出現してもしなくてもよい要素です。ただし、出現する場合は一度だけです。

XML形式の設定ファイルのツリー構造

ツリーの一番上には、<log4j:configuration> 要素がきます。この要素は必ず一つだけ出現する必要があります。

<log4j:configuration>要素の属性
属性名 データ型 必須
xmlns:log4j CDATA ○(固定値:http://jakarta.apache.org/log4j/)
threshold CDATA ×(all,debug,info,warn,error,fatal,off,nullのいずれか、nullが初期値)
debug CDATA ×(〃)

そして、<log4j:configuration> の中には、<renderer> 要素、<appender> 要素、<logger>要素または<category> 要素、<root>要素、<categoryFactory>要素が含まれます。左の図には<category>要素がありませんが、<category>要素は全て<logger>要素で置き換えることが出来ますので、ここでは説明しません。

<renderer> 要素は要素をもちません。属性として次の属性を持ちます。

<renderer>要素の属性
属性名 データ型 必須
renderedClass CDATA
renderingClass CDATA

<appender> 要素は、org.apache.log4j.Appender インタフェースを実装するクラスを設定するための要素です。<appender> 要素は <errorHandler> 要素、<param> 要素、<layout> 要素、<filter> 要素、<appender-ref>要素を持ちます。<appender> 要素は次の属性を持ちます。name で APPENDER の名前を設定し、class でどのクラスの APPENDER を使用するのか設定します。

<appender>要素の属性
属性名 データ型 必須
name ID
class CDATA

<errorHandler> 要素は、org.apache.log4j.spi.errorHandler インタフェースを示すものです。 APPENDERはエラー処理を errorHandler に委譲することになっています。Log4J で提供されている、このインタフェースを実装したクラスは org.apache.log4j.helpers.OnlyOnceErrorHandler クラスのみです。また全ての APPENDER のエラー処理はこのクラスに委譲されるようになっています。この要素は、<param>要素、<root-ref>要素、<logger-ref>要素、<appender-ref>要素をもちます。属性は、次表のとおりです。。

<errorHandler>要素の属性
属性名 データ型 必須
class CDATA

<param> 要素はこの様々なデータを設定することが出来る要素です。<param>要素の属性は、name と value からなり、親要素独自の値を設定することが出来ます。図のツリー図を見ていただければ分かるように、この要素は他の要素に対してもよく使われる要素です。<appender> 要素の場合は、APPENDER に FileAppender を指定した場合は、出力先のファイル名を設定したりする場合に利用されます。

<param>要素の属性
属性名 データ型 必須
name CDATA
value CDATA

<layout> 要素は org.apache.log4j.Layout を拡張したクラスを設定します。この要素は <param> 要素をもち、PatternLayout の ConversionPattern を設定したりします。<layout> 要素は次の属性をもちます。class でどのクラスの LAYOUT を使用するか指定します。

<layout>要素の属性
属性名 データ型 必須
class CDATA

<filter>要素は、org.apache.log4j.spi.filter クラスを拡張したクラスを指定します。このクラスは、APPENDER の出力するログのうち、必要なものだけを出力する場合に使用します。このクラスを拡張したクラスには、DenyAllFilter , LevelMatchFilter , LevelRangeFilter , StringMatchFilter があります。全て org.apache.log4j.valia パッケージのクラスです。<filter>要素は次の要素をもちます。class でどのクラスを使用するのかを設定します。

<filter>要素の属性
属性名 データ型 必須
class CDATA

<appender-ref>要素は、APPENDER を参照する要素です。既に記述してある <appender> 要素を参照する場合に使用します。<appender-ref> 要素は次の属性を持ちます。

<appender-ref>要素の属性
属性名 データ型 必須
ref IDREF

次に <logger> 要素ですが、これは Logger クラスを設定するのに使用します。この要素が持つ要素は、<param>要素、<level>要素、<appender-ref>要素です。<param>要素と<appender-ref>要素は説明済みなので、ここでは<level>要素について説明します。<level>要素はこれまでに説明してきた org.apache.Level クラスを表します。<level>要素は次の属性をもちます。class でクラス名を、value でどのイベントレベルにするのかを指定します。またこの要素は<param>要素をもちます。

<level>要素の属性
属性名 データ型 必須
class CDATA ×
value CDATA

<root>要素は、org.apache.log4j.spi.RootCategoryを表します。この要素は出現しなくても構いませんが、出現する場合は一つだけしか出現してはいけません。この要素は<logger>要素と同じ要素を持ちます。また<root>要素は属性をもちません。

(実習課題1)

第2章実習課題1で作成した設定ファイルをXML形式で記述しなさい。

  • 設定ファイルの作成だけでよい。
  • この設定ファイルを呼び出すプログラムの実装はしなくてよい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp