标签:
1. 下载jar包:
http://logging.apache.org/log4j/1.2/download.html
结构如下:
2. 创建项目,记得导入包:
3.src同级创建并设置log4j.properties:
properties部分组要考虑下面三个方面:
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种:
举例
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
标签:
原文地址:http://www.cnblogs.com/linchw3/p/5664045.html