举个例子,日志文件的配置是这个样得,如下:

1.log4j.logger.interface= 
INFO,interface 

2.log4j.appender.interface= 
org.apache.log4j.DailyRollingFileAppender 

3.log4j.appender.interface.File= 
logs/interface/interface.log 

4.log4j.appender.interface.DatePattern = 
'.'yyyy-MM-dd  

5.log4j.appender.interface.layout= 
org.apache.log4j.PatternLayout 

6.log4j.appender.interface.layout.ConversionPattern= 
%d{yyyy-MM-dd HH:mm:ss.SSS}|%p|%c:%l|%m%n 

7. 
#log4j.appender.interface.MaxFileSize=10240KB 

8.log4j.appender.interface.Encoding= 
UTF-8  

9. 
#log4j.appender.interface.MaxBackupIndex=10


解析一下上面得日志:




第一行:日志的等级为info,一个interface的日志,格式就是如下:


log4j.rootLogger = 
[ level ] , appenderName1, appenderName2, … 

log4j.rootLogger =


日志级别,输出位置1,输出位置2...( 有时候会看到stdout,stdout是控制台输出)




第二行:每天产生一个日志文件,格式如下:


log4j.appender.appenderName = 
className



这里是设置输出的目的地,是控制台?文件?你自己设置,有5种可以选


(1)

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


(2)

org.apache.log4j.FileAppender( 文件)


(3)o

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


(4)

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


(5)

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




第三行:日志存放的位置和日志的名称




第四行:滚动日志文件,也就是多久产生一个新的文件


可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和


minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选


项的有效值为:


'.'yyyy-MM,对应monthly(

每月)


'.'yyyy-ww,对应weekly(

每周)


'.'yyyy-MM-dd,对应daily(

每天)


'.'yyyy-MM-dd-a,对应half-daily(

每半天)


'.'yyyy-MM-dd-HH,对应hourly(

每小时)


'.'yyyy-MM-dd-HH-mm,对应minutely(

每分钟)




第五行:日志输出格式,Log4j提供的layout有以下几种:


org.apache.log4j.HTMLLayout(

以HTML表格形式布局),


org.apache.log4j.PatternLayout(

可以灵活地指定布局模式),


org.apache.log4j.SimpleLayout(

包含日志信息的级别和信息字符串),


org.apache.log4j.TTCCLayout(

包含日志产生的时间、线程、类别等等信息)




第六行:日志指定布局输出的日志格式,打印格式格式化日志信息,如下:

       %m  

输出代码中指定的消息


  %p  

输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 


  %r    

输出自应用启动到输出该log信息耗费的毫秒数 


  %c    

输出所属的类目,通常就是所在类的全名 


  %t    

输出产生该日志事件的线程名 


  %n  

输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 


输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,

 比如:

        %d{yyy MMM dd HH:mm:ss ,SSS}, 

输出类似:

        2002年10月18日  22 : 10 : 28 , 921  

  %l  

输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。




第七行:

注释掉了,是一个文件的大小,超过了重新创建一个




第八行:日志文件的编码格式是哪一种




第九行:

注释掉了,是最多有多少个日志文件,不要和第七行混了






牢记:


1.Log4j有三个主要的组件:

Loggers(记录器),Appenders (输出源)和Layouts(布局)。


这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这


三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和


位置。


Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这


五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条


日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设


定级别的日志信息




2、配置日志信息输出目的地(appender):


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


className:有如下5种:


(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(将日志信息以流格式发送到任意指定的地方)




3、配置日志信息的输出格式(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(包含日志产生的时间、线程、类别等等信息)