log4j 教程

1. 下载jar包:

   http://logging.apache.org/log4j/1.2/download.html

  结构如下:

2. 创建项目,记得导入包:

   导入包

3.src同级创建并设置log4j.properties:

        properties部分组要考虑下面三个方面:

    • Logger - 日志写出器,供程序员输出日志信息
    • Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去
    •               ConsoleAppender - 目的地为控制台的Appender 

 

                    FileAppender - 目的地为文件的Appender 

 

                    RollingFileAppender - 目的地为大小受限的文件的Appender
    • Layout - 日志格式化器,用来把程序员的logging request格式化成字符串
    •               PatternLayout - 用指定的pattern格式化logging request的Layout 

log4j.properties模板: 

 1 #配置根Logger  
 2 #定义总的级别和目的地,目的地是可以多个,级别是总的,当然也可以对每一个目的地进行单独设置输出级别。  
 3 log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …  
 4   
 5 #配置日志信息输出目的地Appender  
 6 log4j.appender.appenderName  =  fully.qualified.name.of.appender.class   
 7   log4j.appender.appenderName.option1  =  value1   
 8   …   
 9   log4j.appender.appenderName.optionN  =  valueN   
10   
11 #配置日志信息的格式(布局)  
12 log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class   
13   log4j.appender.appenderName.layout.option1  =  value1   
14   …   
15   log4j.appender.appenderName.layout.optionN  =  valueN   

 

 

1.Logger日志写出器 
级别 
优先级:ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF 

#配置根Logger  
log4j.rootLogger=info,A1,R  

2.Appender日志目的地 
目的地的值有5种: 
org.apache.log4j.ConsoleAppender(控制台) 
org.apache.log4j.FileAppender(文件) 
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) 
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

选择不同的输出目的地,相应的需要配置不同的属性: 
控制台ConsoleAppender: 

#配置根Logger  
log4j.rootLogger=info,A1,R  
  
log4j.appender.A1=org.apache.log4j.ConsoleAppender  
#Target:默认情况下是System.out,指定输出控制台  
log4j.appender.A1.Target=System.out  
#Threshold:指定日志信息的最低输出级别,默认为DEBUG  
log4j.appender.A1.Threshold=INFO  

文件FileAppender: 

#配置根Logger  
log4j.rootLogger=info,A1,R  
  
log4j.appender.A1=org.apache.log4j.FileAppender  
#Append:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。  
log4j.appender.A1.Append=false  
#Threshold:指定日志信息的最低输出级别,默认为DEBUG。  
log4j.appender.A1.Threshold=INFO  
#File:指定消息输出到log.log文件中。  
log4j.appender.A1.File=D:/logs/log.log  

每天产生一个日志文件DailyRollingFileAppender: 

#配置根Logger  
log4j.rootLogger=info,A1,R  
  
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender  
#Append:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。  
log4j.appender.A1.Append=false  
#Threshold:指定日志信息的最低输出级别,默认为DEBUG。  
log4j.appender.A1.Threshold=INFO  
#File:指定消息输出到log.log文件中。  
log4j.appender.A1.File=D:/logs/log.log  
#DatePattern:周期性滚动一次日志文件,即周期性产生一个新的日志文件。当前周期性的日志文件名为logging.log4j,前一个周期性的日志文件名为logging.log4j.yyyy-MM。  
#另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:  
1)'.'yyyy-MM:每月  
2)'.'yyyy-ww:每周  
3)'.'yyyy-MM-dd:每天  
4)'.'yyyy-MM-dd-a:每天两次  
5)'.'yyyy-MM-dd-HH:每小时  
6)'.'yyyy-MM-dd-HH-mm:每分钟  
log4j.appender.A1.DatePattern='.'yyyy-MM  

文件大小RollingFileAppender:

#配置根Logger  
log4j.rootLogger=info,A1,R  
  
log4j.appender.A1=org.apache.log4j.RollingFileAppender  
#Append:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。  
log4j.appender.A1.Append=false  
#Threshold:指定日志信息的最低输出级别,默认为DEBUG。  
log4j.appender.A1.Threshold=INFO  
#File:指定消息输出到log.log文件中。  
log4j.appender.A1.File=D:/logs/log.log  
#MaxFileSize:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到log.log.1文件中。  
log4j.appender.A1.MaxFileSize=10MB  
#MaxBackupIndex:指定可以产生的滚动文件的最大数,例如,设为2则可以产生log.log.1,log.log.2两个滚动文件和一个log.log文件。  
log4j.appender.A1.MaxBackupIndex=2  

 

3.Layout日志格式化器 
Layout的值有4种: 

  • (1)org.apache.log4j.HTMLLayout(以HTML表格形式布局)
  • (2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
  • (3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
  • (4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)


举例 

log4j.appender.R=org.apache.log4j.RollingFileAppender  
log4j.appender.R.Append = true  
log4j.appender.R.File=log/log.log  
log4j.appender.R.MaxBackupIndex=10  
log4j.appender.R.layout=org.apache.log4j.PatternLayout  
log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] [%13F:%L] %3x - %m%n  

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: 
  %m 输出代码中指定的消息 
  %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
  %r 输出自应用启动到输出该log信息耗费的毫秒数 
  %c 输出所属的类目,通常就是所在类的全名 
  %t 输出产生该日志事件的线程名 
  %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 
  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 
  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 

4. 写代码:

 

 1 import org.apache.log4j.Logger;
 2 
 3 public class Test {
 4  private static Logger logger = Logger.getLogger(Test.class); 
 5  /** 
 6  * @param args 
 7  */ 
 8  public static void main(String[] args) { 
 9  // System.out.println("This is println message."); 
10  // 记录debug级别的信息 
11  logger.debug("This is debug message."); 
12  // 记录info级别的信息 
13  logger.info("This is info message."); 
14  // 记录error级别的信息 
15  logger.error("This is error message."); 
16  } 
17 }

之后再指定的位置以及控制台就都有log啦...

 

参考:http://sunyuqian.iteye.com/blog/2233655

        http://www.jb51.net/article/74475.htm

posted @ 2016-07-12 16:38  linchw3  阅读(290)  评论(0编辑  收藏  举报