log4j教程 10、PatternLayout
2015-07-14 02:53
211 查看
如果想生成基于模式的特定格式的日志信息,那么可以使用org.apache.log4j.PatternLayout格式化日志信息。
PatternLayout类扩展抽象org.apache.log4j.Layout类并覆盖format()方法根据提供的模式构建日志信息。
PatternLayout也是一个简单的布局对象,它提供下列Bean属性,可以通过配置文件进行设置:
下表涵盖了各种各样的修饰符的情况:
现在考虑下面产生日志信息的Java例子:
编译并运行上述程序,它会创建log.out文件在/usr/home/log4j目录,该文件将有如下的日志信息:
PatternLayout类扩展抽象org.apache.log4j.Layout类并覆盖format()方法根据提供的模式构建日志信息。
PatternLayout也是一个简单的布局对象,它提供下列Bean属性,可以通过配置文件进行设置:
S.N. | 属性和说明 |
---|---|
1 | conversionPattern 设置转换模式。默认为%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的信息 |
% | 文字百分号%%将打印%标志 |
格式修饰符:
默认情况下,相关资料原样输出。然而,随着格式修饰符的帮助下,可以改变最小字段宽度,最大字段宽度和对齐。下表涵盖了各种各样的修饰符的情况:
Formatmodifier | leftjustify | minimumwidth | maximumwidth | 注释 |
---|---|---|---|---|
%20c | false | 20 | none | 用空格左垫,如果类别名称少于20个字符长 |
%-20c | true | 20 | none | 用空格右垫,如果类别名称少于20个字符长 |
%.30c | NA | none | 30 | 从开始截断,如果类别名称超过30个字符长 |
%20.30c | false | 20 | 30 | 用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。 |
%-20.30c | true | 20 | 30 | 用空格右侧垫,如果类别名称短于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
相关文章推荐
- log4j教程 9、HTMLLayout
- log4j教程 8、日志格式化
- log4j教程 7、日志记录级别
- C语言之基本算法39—字符串经典操作
- JDBC事务控制
- log4j教程 6、Logger方法
- log4j教程 5、示例程序
- C语言之基本算法38—格式化输出10000以内的所有完数
- _俩个理念
- log4j教程 4、配置
- log4j教程 3、架构
- log4j教程 2、安装
- C语言之基本算法37—数组最大值及其位置
- leetcode 236: Lowest Common Ancestor of a Binary Tree
- HDOJ-3583LOOPS(概率DP)
- Hadoop无法上传文件查找原因
- log4j教程 1、概述
- [LeetCode] Text Justification
- Hadoop集群出现no data node to stop的解决方案
- POJ 1811 解题报告