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)%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)
6)%c:输出日志信息所属的类目,通常就是所在类的全名。
7)%M:输出产生日志信息的方法名。
8)%F:输出日志消息产生时所在的文件名称。
9)%L::输出代码中的行号。
10)%m::输出代码中指定的具体日志信息。
11)%n:输出一个回车换行符,Windows平台为"rn",Unix平台为"n"。
12)%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
13)%%:输出一个"%"字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
1) c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
2)%-20c:"-"号表示左对齐。
3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
参考:http://www.cnblogs.com/ITtangtang/p/3926665.html