このチュートリアルでは、従来のlog4j 1.2.xを使用して、Javaアプリケーションでデバッグ・メッセージまたはエラー・メッセージを記録する方法を説明します。

1.プロジェクトディレクトリ

標準的なMavenスタイルのJavaプロジェクトである、最終的なプロジェクト構造を見直してください。


log4j-hello-world、width = 426、height = 411

2. Log4jを入手する

次の依存関係を宣言します。

pom.xml

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

非Mavenユーザの場合は、http://logging.apache.org/log4j/1.2/[log4j公式ページ]にアクセスし、jarファイルをダウンロードしてプロジェクトライブラリパスに手動で入力します。

3. log4j.properties

`log4j.properties`ファイルを作成し、それをresourcesフォルダに入れます。

上記の手順1を参照してください。

`project/classes`ディレクトリの下にあります
。 Java Webアプリケーションの場合、 `log4j.properties`ファイルが

`WEB-INF/classes`ディレクトリの下にあります

log4j.properties

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

  • Note ** + `ConversionPattern`のシンボルについては、http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html[log4j PatternLayout guide]を参照してください。

それを打ち破ろう:

  1. %d \ {yyyy-MM-dd HH:mm:ss} =日付と時刻のフォーマット、参照先

  1. %-5p = DEBUGやERRORのようなロギングの優先順位. -5はオプションですが、

かなりの印刷フォーマットのために。

  1. %c \ {1} = getLogger()で設定したロギング名です.


log4j PatternLayout guide

をご覧ください。

  1. %L =ロギング要求の行番号.

  2. %m%n =ログと改行のメッセージ.

ログメッセージの例:

2014-07-02 20:52:39 DEBUG className:200 - This is debug message
2014-07-02 20:52:39 DEBUG className:201 - This is debug message2

4.デモ – メッセージを記録する方法?

メッセージを記録するには、まず最終的な静的ロガーを作成し、ロガーの名前を定義します。通常は、完全なパッケージクラス名を使用します。

    final static Logger logger = Logger.getLogger(classname.class);

次に、さまざまな優先度を持つメッセージをログに記録します(例:debug、info、warn、error、fatal)。通常は、デバッグまたはエラーを使用するだけです。

   //logs a debug message
    if(logger.isDebugEnabled()){
        logger.debug("This is debug");
    }

   //logs an error message with parameter
    logger.error("This is error : " + parameter);

   //logs an exception thrown from somewhere
    logger.error("This is error", exception);


4.1例:

Loggerは

debug

priorityに設定されています。

log4j.properties

log4j.rootLogger=DEBUG, stdout

#...

HelloExample.java

package com.mkyong;

import org.apache.log4j.Logger;

public class HelloExample{

    final static Logger logger = Logger.getLogger(HelloExample.class);

    public static void main(String[]args) {

        HelloExample obj = new HelloExample();
        obj.runMe("mkyong");

    }

    private void runMe(String parameter){

        if(logger.isDebugEnabled()){
            logger.debug("This is debug : " + parameter);
        }

        if(logger.isInfoEnabled()){
            logger.info("This is info : " + parameter);
        }

        logger.warn("This is warn : " + parameter);
        logger.error("This is error : " + parameter);
        logger.fatal("This is fatal : " + parameter);

    }

}

出力

2014-07-02 20:52:39 DEBUG HelloExample:19 - This is debug : mkyong
2014-07-02 20:52:39 INFO  HelloExample:23 - This is info : mkyong
2014-07-02 20:52:39 WARN  HelloExample:26 - This is warn : mkyong
2014-07-02 20:52:39 ERROR HelloExample:27 - This is error : mkyong
2014-07-02 20:52:39 FATAL HelloExample:28 - This is fatal : mkyong


4.2例-

Loggerは

error

priorityに設定されています。

log4j.properties

log4j.rootLogger=error, stdout

#...

`HelloExample`をもう一度実行すると、以下の出力が得られます

2014-07-02 20:56:02 ERROR HelloExample:27 - This is error : mkyong
2014-07-02 20:56:02 FATAL HelloExample:28 - This is fatal : mkyong

log4jの `Priority`クラスを見直してください。

Priority.java

package org.apache.log4j;

public class Priority {

  public final static int OFF__INT = Integer.MAX__VALUE;
  public final static int FATAL__INT = 50000;
  public final static int ERROR__INT = 40000;
  public final static int WARN__INT  = 30000;
  public final static int INFO__INT  = 20000;
  public final static int DEBUG__INT = 10000;
   //public final static int FINE__INT = DEBUG__INT;
  public final static int ALL__INT = Integer.MIN__VALUE;

priorityが `log4j.properties`で定義されている場合、優先度が同じかそれ以上のメッセージだけが記録されます。

5.デモ – 例外をログに記録する方法

log4jを使用して例外を記録する方法を示す例です。

HelloExample2.java

package com.mkyong;

import org.apache.log4j.Logger;

public class HelloExample2{

    final static Logger logger = Logger.getLogger(HelloExample2.class);

    public static void main(String[]args) {

        HelloExample2 obj = new HelloExample2();

        try{
            obj.divide();
        }catch(ArithmeticException ex){
            logger.error("Sorry, something wrong!", ex);
        }


    }

    private void divide(){

        int i = 10/0;

    }

}

出力

2014-07-02 21:03:10 ERROR HelloExample2:16 - Sorry, something wrong!
java.lang.ArithmeticException:/by zero
    at com.mkyong.HelloExample2.divide(HelloExample2.java:24)
    at com.mkyong.HelloExample2.main(HelloExample2.java:14)

完了しました。

ソースコードをダウンロードする

ソースコードのダウンロード – リンク://wp-content/uploads/2014/07/log4j-hello-world.zip[log4j-hello-world-example.zip](8 KB)

参考文献

パターンレイアウト]。

ウィキペディア:log4j

  1. リンク://spring-mvc/spring-mvc-log4j-integration-example/[Spring MVC

log4jの例]。リンク://logging/log4j-log4j-properties-examples/[log4j.properties

例]