Log4J使用小总结

Log4J使用小总结

日志是软件系统中重要的一环,系统是否在正常运行或者自己的服务器很不幸地宕机了,都要通过系统日志进行分析。而在Java中使用日志,当然首选log4j,功能强大,使用方法简单明了,学习成本小到几乎没有。下面就简单地说明一下上午学习的成果。

Log4j是apache基金组织的开源项目,只说它是开源的,其它请东西请百度之。

1.  获取:

可以从log4j官网下载,或者在国内随处可以下载,注意以前版本它是有两个包的,现在只要一个包就可以(log4j-1.2.17.jar)

2.  集成到项目中

将之加入自己的项目中,eclipse可以build path,将它变成可爱的小奶瓶,就可以使用它的类了。

3.  创建配置文件

在工程的src目录下创建名为log4j.properties的配置文件,在文件中写入以下的内容:

说明:先照样将之些写进去,具体配置项的作用下面会有说明

<span style="font-size:14px;">log4j.rootLogger=info, stdout, log, errorlog
#配置根日志
log4j.Logger=search,Test

###Console ###
#对控制台输出信息的配置
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
#进行添加日志
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#输出日志的格式匹配样式
log4j.appender.stdout.layout.ConversionPattern = [%p] %d{ABSOLUTE} [%t]:%l - %m%n
#输出样式,具体几个参数所说明见下面

### Log ###  
#对输出INFO级别文件中信息的配置
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
#每日新建一个新的日志文件
log4j.appender.log.File = log/log.log
#指定的文件目录
log4j.appender.log.Append = true
#添加
log4j.appender.log.Threshold = INFO
#级别,下面会讲
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ]%l %m%n
#指定了具体的时间格式

### Error ###
#对输出ERROR级别文件中信息的配置
log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.File = log/errorlog.log
log4j.appender.errorlog.Append = true
log4j.appender.errorlog.Threshold = ERROR 
log4j.appender.errorlog.DatePattern='.'yyyy-MM-dd
log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t ]%L  %m%n
</span>

1.  创建需要写日志的类,以TestLog为例,看上半部分:

<span style="font-size:14px;">package com.heima.testlog;

import org.apache.log4j.Logger;

public class TestLog {

	public static void main(String[] args) {
		//获取日志对象
		Logger log = Logger.getLogger(Class1.class);
		//在日志对象中写一条日志
		//这条日志会在控制台打印,并保存在log/log.log(配置文件中设定)中
		log.info("abc");
		//控制台的输出信息
		//[INFO] 14:50:31,998 [main]:com.heima.testlog.TestLog.main(TestLog.java:12) - abc
		//
		//===================================分隔线===================================
		//
		Class1.a();
		//控制台的输出信息
		//[INFO] 15:18:18,148 [main]:com.heima.testlog.Class1.a(Class1.java:8) - abc
		//[INFO] 15:18:18,148 [main]:com.heima.testlog.Class1.b(Class1.java:13) - abcddddd
		//显示的是真正写入日志的地方
	}
}
</span>

好!!!基本上已经会用Log4j了^^,是不是简单得丧心病狂,是不是没有学习成本。

下面再简单说一下log4j其它的内容,也填一下自己挖的坑。

1.  配置文件

在文件中进行了部分说明。

<span style="font-size:14px;">log4j.rootLogger=info, stdout, log, errorlog
#配置根日志
log4j.Logger=search,Test

###Console ###
#对控制台输出信息的配置
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
#进行添加日志
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#输出日志的格式匹配样式
log4j.appender.stdout.layout.ConversionPattern = [%p] %d{ABSOLUTE} [%t]:%l - %m%n
#输出样式,具体几个参数所说明见下面

### Log ###  
#对输出INFO级别文件中信息的配置
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
#每日新建一个新的日志文件
log4j.appender.log.File = log/log.log
#指定的文件目录
log4j.appender.log.Append = true
#添加
log4j.appender.log.Threshold = INFO
#级别,下面会讲
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ]%l %m%n
#指定了具体的时间格式

### Error ###
#对输出ERROR级别文件中信息的配置
log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.File = log/errorlog.log
log4j.appender.errorlog.Append = true
log4j.appender.errorlog.Threshold = ERROR 
log4j.appender.errorlog.DatePattern='.'yyyy-MM-dd
log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t ]%L  %m%n</span>

下面是对具体输出信息的几个符号的说明:

      %p 输出优先级,即DEBUGINFOWARNERRORFATAL 
  %r 输出自应用启动到输出该log信息耗费的毫秒数 
  %c 输出所属的类目,通常就是所在类的全名 
  %t 输出产生该日志事件的线程名 
  %n 输出一个回车换行符,Windows平台为“\r\n”Unix平台为“\n” 
  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20021018 221028921 
  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。     

        要说明一下,%L与%l是不同的,%L只会显示行号,而%l会显示较多信息

2.  日志级别问题

上面已经提到了这个日志级别的问题,就是程序运行在不同的状态下会有不同的行为。

Log4j中已经定义了debug,info,warn,error和fatal等几个级别,对应级别是越来越高。只有高于某个级别,才会在那个级别上留下记录。如

logger.info(“abc”)会在INFO中留下记录,而不会在WARN和ERROR中记录信息

而logger.error(“abc”)会在ERROR及以下定义的行为中留下记录。

 

3.    再看上面例子中的下半部分和Class1。

<span style="font-size:14px;">package com.heima.testlog;

import org.apache.log4j.Logger;

public class Class1 {
	public static void a () {
		Logger log = Logger.getLogger(Class1.class);
		log.info(log);
		//[INFO] 15:43:16,375 [main]:com.heima.testlog.Class1.a(Class1.java:8) - org.apache.log4j.Logger@92b94c3
		log.info("abc");
		log.debug("i am a boy");//不会显示
		b();
	}
	public static void b () {
		Logger log = Logger.getLogger(Class1.class);
		log.info(log);
		//[INFO] 15:43:16,375 [main]:com.heima.testlog.Class1.b(Class1.java:16) - org.apache.log4j.Logger@92b94c3
		//可见拿到的是一个日志对象
		log.info("abcddddd");
	}
}
</span>

Log4j是个有用的东西,可以帮助我们高度程序和在生产环境下监控系统的行为。同时也是个比较简单的组件,这只是它的一部分功能,它还有其它强大的功能,现在能力有限,先写到这里。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值