您的位置:首页 > 其它

log4j教程 10、PatternLayout

2015-07-14 02:53 211 查看
如果想生成基于模式的特定格式的日志信息,那么可以使用org.apache.log4j.PatternLayout格式化日志信息。

PatternLayout类扩展抽象org.apache.log4j.Layout类并覆盖format()方法根据提供的模式构建日志信息。

PatternLayout也是一个简单的布局对象,它提供下列Bean属性,可以通过配置文件进行设置:

S.N.属性和说明
1conversionPattern
设置转换模式。默认为%r[%t]%p%c%x-%m%n

模式转换字符:

下表说明了以上模式使用的字符和所有其他字符,可以在自定义模式中使用:

转换字符表示的意思
c用于输出的记录事件的类别。例如,对于类别名称"a.b.c"模式%c{2}会输出"b.c"
C用于输出呼叫者发出日志请求的完全限定类名。例如,对于类名"org.apache.xyz.SomeClass",模式%C{1}会输出"SomeClass".
d用于输出的记录事件的日期。例如,%d{HH:mm:ss,SSS}或%d{ddMMMyyyyHH:mm:ss,SSS}.
F用于输出被发出日志记录请求,其中的文件名
l用于将产生的日志事件调用者输出位置信息
L用于输出从被发出日志记录请求的行号
m用于输出使用日志事件相关联的应用程序提供的消息
M用于输出发出日志请求所在的方法名称
n输出平台相关的行分隔符或文字
p用于输出的记录事件的优先级
r用于输出毫秒从布局的结构经过直到创建日志记录事件的数目
t用于输出生成的日志记录事件的线程的名称
x用于与产生该日志事件的线程相关联输出的NDC(嵌套诊断上下文)
X在X转换字符后面是键为的MDC。例如X{clientIP}将打印存储在MDC对键clientIP的信息
%文字百分号%%将打印%标志

格式修饰符:

默认情况下,相关资料原样输出。然而,随着格式修饰符的帮助下,可以改变最小字段宽度,最大字段宽度和对齐。

下表涵盖了各种各样的修饰符的情况:

Formatmodifierleftjustifyminimumwidthmaximumwidth注释
%20cfalse20none用空格左垫,如果类别名称少于20个字符长
%-20ctrue20none用空格右垫,如果类别名称少于20个字符长
%.30cNAnone30从开始截断,如果类别名称超过30个字符长
%20.30cfalse2030用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。
%-20.30ctrue2030用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。

PatternLayout示例:

以下是针对PatternLayout一个简单的配置文件:

#Definetherootloggerwithappenderfile
log=/usr/home/log4j
log4j.rootLogger=DEBUG,FILE

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

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


现在考虑下面产生日志信息的Java例子:

importorg.apache.log4j.Logger;

importjava.io.*;
importjava.sql.SQLException;
importjava.util.*;

publicclasslog4jExample{
/*Getactualclassnametobeprintedon*/
staticLoggerlog=Logger.getLogger(
log4jExample.class.getName());

publicstaticvoidmain(String[]args)
throwsIOException,SQLException{

log.debug("Hellothisisandebugmessage");
log.info("Hellothisisaninfomessage");
}
}


编译并运行上述程序,它会创建log.out文件在/usr/home/log4j目录,该文件将有如下的日志信息:

2010-03-23-main--DEBUG-log4jExample:Hellothisisandebugmessage
2010-03-23-main--INFO-log4jExample:Hellothisisaninfomessage



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: