目次へ

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クラスを使用して指定すること

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp