- 8.1. 設定ファイルの書き方
- 8.2. 設定ファイルの利用
8.2. 設定ファイルの利用
前節で説明したフォーマットに従って、XMLによりログの出力を設定するわけですが、その設定どおりログを出力させるには、org.apache.log4j.xml.DomConfiguratorクラスを使用します。使用方法はorg.apache.log4j.PropertyConfiguratorクラスを使用する場合と同じです。DOMConfiguratorクラスを使用するには、クラスパスにXMLパーサを含める必要があります。JDK1.4を利用の場合は、XMLパーサをクラスパスに含める必要がありません。
次のプログラムはsample.xmlという設定ファイルを読み込み、ログを出力します。
import java.io.File; import java.io.IOException; import org.apache.log4j.Category; import org.apache.log4j.xml.DOMConfigurator; public class DomConfiguratorSample{ private static Logger logger =Logger.getLogger(DomConfiguratorSample.class.getName()); public static void main(String args[]){ if(args.length!=1){ System.out.println("java DomConfiguratorSample [xml_config_file]"); System.exit(1); } DOMConfigurator.configure(args[0]); logger.debug("**** debug ****"); logger.info("**** info ****"); logger.warn("**** info ****"); logger.error("**** error ****"); logger.fatal("**** fatal ****"); } }
このプログラムは引き数に読み込む設定ファイルを指定し、ログの出力を DOMConfigurator に任せるというものです。18行目のDOMConfiguratorのクラスメソッドconfigure( ) メソッドでログを出力する体制を整えます。
次の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="A1" class="org.apache.log4j.FileAppender"> <param name="File" value="A1.log" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/> </layout> </appender> <logger name="DomConfiguratorSample"> <level value="warn" /> <appender-ref ref="A1" /> </logger> </log4j:configuration>
1行目と2行目はおまじないのようなものですが必ず記述します。3行目から最後までの間で、詳細な設定を行っています。<log4j>要素の属性で、「xmlns:log4j」の値は必ず「http://jakarta.apache.org/log4j/」とします。
5行目から11行目では APPENDER の設定を行っています。ここでは「org.apache.log4j.FileAppender」を使用しています。<param>要素で出力する先のファイル名とログファイルにログを追加するのか、上書きするのかを決定しています。また<appender>要素内の<layout>要素で LAYOUT を「org.apache.log4j.PatternLayout」を指定し、<param>要素でログの出力フォーマットを指定しています。
13行目から16行目では Logger の設定を行っています。名前が「DomConfiguratorSample」の Logger のイベントレベルを WARN とし、使用する APPENDER を「A1」としています。「A1」は5行目から11行目で設定された APPENDER です。
基本的には ProperyConfigurator を使用する場合と、DOMConfigurator を使用する場合とでは、機能にはそれほど大きな差はありません。しかし、ProperyConfigurator の API リファレンスを見れば分かるのですが、PropertyConfigurator ではサポートしていないことを DOMConfigurator がサポートしている場合もあります。また、設定ファイルが XML 形式で書けるという利点を考えると、開発環境が XML パーサをサポートしているのであれば、是非 DOMConfigurator を使用するべきでしょう。
(実習課題2)
全てのレベルのログイベントを故意に発生させ、WARN 以上ログイベントが発生した場合のみ、ログとして出力されるプログラムを作成しなさい
- DOMConfigurator を使用しすること。
- WARN 以上のログイベントが発生したときは、リモートの syslogd にメッセージを渡すこと。
- ERROR 以上のログイベントが発生したときは、メールにログを出力するようにすること。