Log4j详细介绍(七)----日志格式化器Layout
日志格式化器Layout负责格式化日志信息。方法log.error()的参数只包含日志信息,利用Layout可以附加其他信息,以输出更多的信息或者布局显示。
PatternLayout布局
PatternLayout是最常用的格式化器,用户可以自定义输出信息,例如日期,时间,所在的线程,类名,文件名,方法名,信息级别,文件级别,文件行数,例如:
1 # ERROR级别,输出到A1 2 3 log4j.rootLogger=DEBUG, A1 4 5 # 定义A1为控制台输出 6 7 log4j.appender.A1=org.apache.log4j.ConsoleAppender 8 9 log4j.appender.A1.layout=org.apache.log4j.PatternLayout 10 11 #定义输出格式 12 13 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%C]-[%p] %m%n
符号%d, %C,%p,%m,%n等后面的便是参数将输出:
1 2013-06-07 20:51:17,933 [com.log4j.test.Log4jJDBCTest]-[ERROR] ERROR级别输出
Log4j中常用的参数表:
参数 |
描述 |
实例 |
c |
输出Logger所在的类别(即Logger的名字)。 允许使用%c{数字}输出部分的名字(从右边往左边数)。见实例 |
%c将输出com.log4j.Log4jTest %c{1}将输出Log4jTest %c{2}将输出log4j.Log4jTest %c{3}将输出com.log4j.Log4jTest |
C |
输出Logger所在类的名称 有时候Logger的名称不同于类名,例如Hibernate中用org.hibernate.SQL作为所有输出DML语句的Logger的名称,便于控制。允许使用%C{数字}输出部分的名称(从右边往左边)。见实例 |
%C将输出com.log4j.Log4jTest %C{1}将输出Log4jTest %C{2}将输出log4j.Log4jTest %C{3}将输出com.log4j.Log4jTest |
d |
输出日期。允许使用%d{yyyy-MM-dd HH:mm:ss}格式化日期。%d不仅支持JDKSimpleDateFormat的日期格式,还支持log4j自己的日期格式,例如ABSOLUTE,DATE,ISO8601等 |
%d将输出2013-06-06 22:24:25,353 %d{yyyy-MM-dd}将输出2013-06-06 %d{ABSOLUTE}将输出22:24:25,353 %d{DATE}将输出06六月2013 22:24:25,253 |
F |
输出所在的类文件名称 |
%F将输出Log4jTest.java |
l |
输出语句所在的行数,包括类名,方法名,文件名,行数等 |
%l将输出com.log4j.test.Log4jTest.main(Log4jTest.java:50) |
L |
输出语句所在的行数,只输出数字 |
%L将输出 50 |
m |
输出日志 |
输出日志,即log.info(“”),log.debug(“”)参数 |
M |
输出方法名 |
%M将输出main |
n |
换行.Windows下输出\r\n,Linux下输出\n |
含行 |
p |
输出日志级别(prioriry) |
DEBUG,INFO,ERROR,FITAL等 |
r |
输出从程序启动到输出该日志之间的时间间隔,单位毫秒 |
%r将输出300 |
t |
输出当前的线程名称 |
%t将输出main,Thread-0,Thread-1等 |
% |
%%用来输出百分号 |
|
Log4j能输出形形色色的参数,这些参数内容的长度可能是不同的。例如,%Cs输出类名,有的类名很长,有的类名很短,会导致日志比较凌乱。为了解决该问题,Log4j允许设置输出内容的长度等,不够的会用空格补上,是输出的内容编的整齐。
设置的方法是在%与参数符号间添加数字,例如%20p,%-20p等。正数表示右对齐,负数表示左对齐,数字表示最小宽度,不足时用空格补齐。还可以设置最大宽度,如果超出,则截取,方法是用小数点+数字设置,例如%.30p。
以%p为例,所有的调整格式见表:
格式 |
对齐方式 |
最小宽度 |
最大宽度 |
描述 |
实例 |
[%10p] |
右对齐 |
10 |
|
正数右对齐,最小宽度 |
[ ERROR] |
[%-10p] |
左对齐 |
10 |
|
负数左对齐,最小宽度 |
[ERROR ] |
[%.4p] |
|
|
4 |
最大宽度 |
[ERROR] |
[%10.20p] |
右对齐 |
10 |
20 |
正数右对齐,最大最小宽度 |
[ ERROR] |
[%-10.20p] |
左对齐 |
10 |
20 |
负数左对齐,最大最小宽度 |
[ERROR ] |
HTMLLayout布局
HTMLLayout讲日志格式化输出为HTML代码,输出到文件后,可以直接用浏览器浏览。使用HTMLLayout时,日志文件后缀一般为.html。配置如下:
1 log4j.rootLogger= DEBUG, H 2 3 4 5 log4j.appender.H=org.apache.log4j.FileAppender 6 7 log4j.appender.H.File=c:\\log.html 8 9 log4j.appender.H.Append=false 10 11 #不配置这个会乱码 12 13 log4j.appender.H.Encoding=GBK 14 15 log4j.appender.H.layout=org.apache.log4j.HTMLLayout
运行效果如下。深色的为记录到Exception。
好了log4j常用的知识点都介绍完了。
小结:记录日志时,可以使用Apache的commons-logging日志。该Log只是个接口,如果有Log4j,则使用Log4j记录日志,否则,会使用JDK的Log。Log4j 配置文件为log4j.properties,需要配置根日志rootLogger,输出地Appender,格式花器Layout。rootLogger是所有Log的父亲,除非重新覆盖,否则所有Log都将继承rootLogger的配置。
posted on 2013-06-07 23:23 Arts&Crafts 阅读(6306) 评论(0) 编辑 收藏 举报