1.4. org.apache.log4j.Appender インタフェース
Appender インタフェースはログの出力先の設定を行うために使用します。
Logger クラスでどの情報をログとして出力するか決定したら、その出力先を以下に設定することが出来ます。
クラス | 出力先 |
---|---|
org.apache.log4j.ConsoleAppender | コンソール |
org.apache.log4j.DailyRollingFileAppender | ファイル |
org.apache.log4j.FileAppender | |
org.apache.log4j.RollingFileAppender | |
org.apache.log4j.WriterAppender | Java.io.Writer |
org.apache.log4j.net.JMSAppender | JMS(Java Message Service) |
org.apache.log4j.net.SMTPAppender | 電子メール |
org.apache.log4j.net.SocketAppender | リモートソケットサーバ |
org.apache.log4j.net.SyslogAppender | リモートUnixSyslogデーモン |
org.apache.log4j.nt.NTEventLogAppender | WindowsNTのイベント・ログ |
org.apache.log4j.AsyncAppender | その他 |
org.apache.log4j.performance.NullAppender | |
org.apache.log4j.varia.ExternallyRolledFileAppender |
Appender は addAppender( ) メソッドで Logger にセットします。各 Logger にセットすることで、それぞれのログを様々な宛先に出力することが出来ます。Logger の階層構造に基づき、親 Logger にセットした Appender を子Loggerが継承することが出来ます。
//Appenderインスタンスの生成 Appender appender = new ConsoleAppender(); logger.addAppender(appender); logger.info("This is info.");
Appenderの各クラスに関する詳細な説明は後の章で行います。
1.5. org.apache.log4j.Layout クラス
出力先を設定したら Layout クラスにより出力フォーマットを設定することが出来ます。Layout クラスは抽象クラスで、具体的に様々なフォーマットを設定するには以下のクラスを使用します。
クラス | フォーマット |
---|---|
org.apache.log4j.SimpleLayout | 単純なレイアウト |
org.apache.log4j.PatternLayout | ユーザが指定したフォーマット |
org.apache.log4j.HTMLLayout | HTMLのテーブル形式 |
org.apache.log4j.TTCCLayout | 時間とスレッド、カテゴリとネスト化診断コンテキスト情報、そして名前から成り立つフォーマット |
//PatternLayoutインスタンスの生成 PatternLayout layout = new PatternLayout(); layout.setConversionPattern("%-4r [%t] %-5p %c %x - %m%n");
Layoutの各クラスに関する詳細な説明は後の章で行います。
1.6. org.apache.BasicConfiguratorクラスを用いた簡単なLog4Jの利用例
実際に Log4J を利用して、簡単なログを出力するプログラムを作成してみましょう。
ここでは、Appender、Layout について詳細な設定を行わないので、BasicConfigurator クラスを使用します。BasicConfigurator クラスは、configure( ) メソッドを使用することで、Appender と Layout を自動的に設定してくれるクラスです。ログ出力について詳細な設定を行わない場合は、便利なクラスだといえます。
configure( ) メソッドで設定される Appender は FileAppender で出力先は標準出力である System.out です。Layout には PatternLayout が設定され、その出力パターンは「%r [%t] %p %c %x - %m%n」です。FileAppender と PatternLayout については、後の章で詳細に説明します。
次のプログラムは、BasicConfigurator クラスを用いて実際にログを出力するものです。出力結果を確認して、どのように出力が制御されているのか確認してください。
import org.apache.log4j.*; public class Log4jSample{ public static void main(String args[]){ Logger logger = Logger.getLogger("Sample"); BasicConfigurator.configure(); logger.setLevel(Level.WARN); logger.debug("debug!!!"); logger.info("info!!!"); logger.warn("warn!!!"); logger.error("error!!!"); logger.fatal("fatal!!!"); } }
7 行目で Logger インスタンスを getLogger( ) メソッドを使用して生成しています。8 行目で BasicConfigurator のクラスメソッド configure( ) を使用して、Appender と Layout をデフォルトに設定しています。
9 行目で、どのレベルのログを出力するのかを設定しています。この例ではログ出力レベルを WARN にしています。ここで設定したレベルにしたがって、11 行目〜 15 行目のメソッドでログを出力するかしないかが決まるのです。この例では、11 行目と 12 行目のメソッドは無効になります(何も出力しない)。
(実習課題1)
引き数にファイルを指定し、そのファイルのサイズが5キロバイトより大きい場合は出力レベルが warn 、10キロバイトより大きい場合は出力レベルが error となるログを出力するプログラムを作成しなさい。
- 出力先、出力フォーマットはBasicConfiguratorクラスを使用して指定すること