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

  • 相关阅读:
    &和&&的区别
    AOP和IOC的实现原理(用到的设计模式)
    字符串里有数字和字符,如何只获取一种(以数字为例)
    maven的搭建
    java中递归的方法的实例
    从零开始学习oracle
    各个浏览器的webdriver
    “equals”有值 与 “==”存在 “equals”只是比较值是否相同,值传递,==地址传递,null==a,避免引发空指针异常,STRING是一个对象==null,对象不存在,str.equals("")对象存在但是包含字符‘''
    Oracle基础入门
    orcale => 含义
  • 原文地址:https://www.cnblogs.com/ArtsCrafts/p/log4j8.html
Copyright © 2020-2023  润新知