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