log4j学习篇

首先,在Apache官网中下载log4j的jar包:http://logging.apache.org  将其引入项目中。

然后,在src下新建配置log4j.properties ,下面是一个例子:

log4j.rootLogger =DEBUG,stdout,Runlog,Debuglog

#stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH\:mm\:ss} %c %m %n 

#Runlog
log4j.appender.Runlog.Threshold=INFO
log4j.appender.Runlog=org.apache.log4j.FileAppender
log4j.appender.Runlog.File = RunFile.log
log4j.appender.Runlog.Append=false
log4j.appender.Runlog.layout=org.apache.log4j.PatternLayout 
log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH\:mm\:ss} %c %m %n 

#Debuglog
log4j.appender.Debuglog.Threshold=DEBUG
log4j.appender.Debuglog=org.apache.log4j.FileAppender
log4j.appender.Debuglog.File = DebugFile.log
log4j.appender.Debuglog.Append=false
log4j.appender.Debuglog.layout=org.apache.log4j.PatternLayout 
log4j.appender.Debuglog.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH\:mm\:ss} %c %m %n 

其中 Log4j. rootLogger =level,appenderName,appenderName, …. 是一个根日志存储器

Level 表示 日志记录的优先级,从高到低有 FATAL(崩溃)、ERROR(错误)、WARN(警告)、INFO(信息)、DEBUG(调试)等。当选择了INFO的话 ,INFO 和高于INFO的FATAL、ERROR、WARN信息会被记录。一般在应用开发阶段的时候级别是DEBUG,应用发布后为ERROR。

appenderName表示日志存储器,可以有多个日志存储器分别将日志记录输出在不同地方。

上例中,stdout 是输出到控制台,而Runlog 与 Debuglog 是输出到文件。

在Stdout中:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender表示储存器的种类,一共有五种:

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

org.apache.log4j.FileAppender (文件)

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

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

log4j.appender.stdout.Target=System.out 表示信息打印在System.out 上

log4j.appender.stdout.Threshold=INFO 表示存储器记录级别是INFO,高于INFO的都会打印出来。但是注意,根日志存储器相当于总阀门,而这里的存储器相当于子阀门,当Log4j. rootLogger设定为ERROR,log4j.appender.stdout.Threshold设为DUBUG时,存储器也只会记载高于等于ERROR的信息。

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout表示日志记录信息输出的格式,一共有4种:

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

org.apache.log4j.PatternLayout (自定义布局)

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

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

log4j.appender.stdout.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH\:mm\:ss} %c %m %n 表示格式化输出:

%d    输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}

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

%n    换行符

%m  输出代码指定信息,如info(“message”),输出message

%p    输出优先级,即 FATAL ,ERROR 等

%r   输出从启动到显示该log信息所耗费的毫秒数

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

在Runlog 不同于stdout 之处:

log4j.appender.Runlog=org.apache.log4j.FileAppender信息输出在文件中。

log4j.appender.Runlog.File = RunFile.log 信息输出文件的目录,这里是相对路径src目录中

log4j.appender.Runlog.Append=false表示日志记录文件中的信息是否追加,false表示不追加,每次记录都会删除之前的信息,重新记录,true表示不会删除而是追加记录。

下面是一个测试软件:

package t.eighteen;

import org.apache.log4j.Logger;

public class LoggerTest {
	private static Logger log = Logger.getLogger(LoggerTest.class);
	
	public static void main(String[] args) {
		if(log.isInfoEnabled())
		{
			log.info("the TestApp is begin");
		}
		test();
	}

	private static void test() {
		// TODO Auto-generated method stub
		if(log.isDebugEnabled())
		{
			log.debug("ined the test");
		}
		if(log.isInfoEnabled())
		{
			log.info("testing...");
		}
		if(log.isDebugEnabled())
		{
			log.debug("willout the test");
		}
	}
}

结果 控制台:

 INFO 2013-02-20 09:51:39 t.eighteen.LoggerTest the TestApp is begin 
 DEBUG 2013-02-20 09:51:39 t.eighteen.LoggerTest ined the test 
  INFO 2013-02-20 09:51:39 t.eighteen.LoggerTest testing... 
 DEBUG 2013-02-20 09:51:39 t.eighteen.LoggerTest willout the test 

Runlog.txt:

 INFO 2013-02-20 09:51:39 t.eighteen.LoggerTest the TestApp is begin 
  INFO 2013-02-20 09:51:39 t.eighteen.LoggerTest testing... 

Debuglog.txt:

 INFO 2013-02-20 09:51:39 t.eighteen.LoggerTest the TestApp is begin 
 DEBUG 2013-02-20 09:51:39 t.eighteen.LoggerTest ined the test 
  INFO 2013-02-20 09:51:39 t.eighteen.LoggerTest testing... 
 DEBUG 2013-02-20 09:51:39 t.eighteen.LoggerTest willout the test 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值