Log4j-patternlayout

提供:Dev Guides
移動先:案内検索

log4j-PatternLayout

パターンに基づいて特定の形式でロギング情報を生成する場合は、 org.apache.log4j.PatternLayout を使用してロギング情報をフォーマットできます。

PatternLayoutクラスは、抽象 org.apache.log4j.Layout クラスを拡張し、* format()*メソッドをオーバーライドして、提供されたパターンに従ってロギング情報を構造化します。

PatternLayoutは、構成ファイルを使用して設定できる次の_Bean Property_を提供する単純なレイアウトオブジェクトでもあります。

Sr.No. Property & Description
1

conversionPattern

変換パターンを設定します。 デフォルトは%r [%t]%p%c%x-%m%nです

パターン変換文字

次の表では、上記のパターンで使用される文字と、カスタムパターンで使用できる他のすべての文字について説明します。

Conversion Character Meaning
c Used to output the category of the logging event. For example, for the category name "a.b.c" the pattern %c{2} will output "b.c".
C Used to output the fully qualified class name of the caller issuing the logging request. For example, for the class name "org.apache.xyz.SomeClass", the pattern %C{1} will output "SomeClass".
d Used to output the date of the logging event. For example, %d\{HH:mm:ss,SSS} or %d\{dd MMM yyyy HH:mm:ss,SSS}.
F Used to output the file name where the logging request was issued.
l Used to output location information of the caller which generated the logging event.
L Used to output the line number from where the logging request was issued.
m Used to output the application supplied message associated with the logging event.
M Used to output the method name where the logging request was issued.
n Outputs the platform dependent line separator character or characters.
p Used to output the priority of the logging event.
r Used to output the number of milliseconds elapsed from the construction of the layout until the creation of the logging event.
t Used to output the name of the thread that generated the logging event.
x Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event.
X The X conversion character is followed by the key for the MDC. For example, X{clientIP} will print the information stored in the MDC against the key clientIP.
% The literal percent sign. %% will print a % sign.

フォーマット修飾子

デフォルトでは、関連情報はそのまま出力として表示されます。 ただし、フォーマット修飾子を使用すると、最小フィールド幅、最大フィールド幅、および位置調整を変更できます。

次の表に、さまざまな修飾子のシナリオを示します。

Format modifier left justify minimum width maximum width comment
%20c false 20 none Left pad with spaces if the category name is less than 20 characters long.
%-20c true 20 none Right pad with spaces if the category name is less than 20 characters long.
%.30c NA none 30 Truncate from the beginning if the category name is longer than 30 characters.
%20.30c false 20 30 Left pad with spaces if the category name is shorter than 20 characters. However, if the category name is longer than 30 characters, then truncate from the beginning.
%-20.30c true 20 30 Right pad with spaces if the category name is shorter than 20 characters. However, if category name is longer than 30 characters, then truncate from the beginning.

パターンレイアウトの例

以下は、PatternLayoutの簡単な構成ファイルです。

# Define the root logger with appender file
log =/usr/home/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n

次に、ログ情報を生成する次のJavaの例を考えてみましょう。

import org.apache.log4j.Logger;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class log4jExample{
  /*Get actual class name to be printed on*/
   static Logger log = Logger.getLogger(log4jExample.class.getName());

   public static void main(String[] args)throws IOException,SQLException{
      log.debug("Hello this is an debug message");
      log.info("Hello this is an info message");
   }
}

上記のプログラムをコンパイルして実行します。 次のログ情報を持つlog.outファイルを/usr/home/log4jディレクトリに作成します。

2010-03-23-main--DEBUG-log4jExample:Hello this is an debug message
2010-03-23-main--INFO -log4jExample:Hello this is an info message