首页 > 代码库 > Log4j配置详解

Log4j配置详解

log4j.rootLogger=INFO,Everyday,SysOut
log4j.logger.org.hibernate.SQL=trace
log4j.logger.org.hibernate.type=trace

#for console
log4j.appender.SysOut=org.apache.log4j.ConsoleAppender
log4j.appender.SysOut.layout=org.apache.log4j.PatternLayout
log4j.appender.SysOut.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#for log files everyday
log4j.appender.Everyday=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Everyday.layout=org.apache.log4j.PatternLayout
log4j.appender.Everyday.File=d://myloggers//log.log
log4j.appender.Everyday.DatePattern=‘.‘yyyy-MM-dd‘.log‘
log4j.appender.Everyday.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.Everyday.MaxFileSize=1024KB
log4j.appender.Everyday.Encoding=UTF-8

 

一、日志级别

  log4j.rootLogger=INFO,A1,B2,C3

  1、级别等级

    OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL

  2、级别含义

    OFF level: 是最高等级的,用于关闭所有日志记录

    FATAL level: 指出每个严重的错误事件将会导致应用程序的退出

    ERROR level: 指出虽然发生错误事件,但仍然不影响系统的继续运行.就是显示错误信息

    WARN level: 表明会出现潜在错误的情形,就是显示警告信息

    INFO level: 表明消息在粗粒度级别上突出强调应用程序的运行过程,就是输出提示信息

    DEBUG Level: 指出细粒度信息事件对调试应用程序是非常有帮助的,就是输出debug的信息

    ALL level: 是最低等级的,用于打开所有日志记录

    只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

 

二、日志信息输出目的地

  log4j.appender.appenderName = className

  1、appenderName:自定义appderName,在log4j.rootLogger设置中使用;

  2、className:可设值如下:

    1)org.apache.log4j.ConsoleAppender(控制台)

    2)org.apache.log4j.FileAppender(文件)

    3)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

    4)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

    5)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

 

三、配置日志信息的输出格式(Layout)

  log4j.appender.appenderName.layout=className

  className:可设值如下:

    1)org.apache.log4j.HTMLLayout(以HTML表格形式布局)

    2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

    3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

    4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

 

四、格式化符号说明

  log4j.appender.appenderName.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

  1)%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。

  2)%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。

  3)%r:输出自应用程序启动到输出该log信息耗费的毫秒数。

  4)%t:输出产生该日志事件的线程名。

  5)sd%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:  

  6)test.TestLog4j.main(TestLog4j.java:10)。

  7)%c:输出日志信息所属的类目,通常就是所在类的全名。

  8)%M:输出产生日志信息的方法名。

  9)%F:输出日志消息产生时所在的文件名称。

  10)%L::输出代码中的行号。

  11)%m::输出代码中指定的具体日志信息。

  12)%n:输出一个回车换行符,Windows平台为"rn",Unix平台为"n"。

  13)%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

  14)%%:输出一个"%"字符。

  另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:

  1) c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。

  2)%-20c:"-"号表示左对齐。

  3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。

 

Log4j配置详解