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的配置。

原文地址:https://www.cnblogs.com/ArtsCrafts/p/log4j8.html