log4j入门教程

来源:互联网 发布:北京渠道网络怎么样 编辑:程序博客网 时间:2024/06/06 05:25

Log4e是一个免费的Eclipse Plugin。其下载地址为:http://log4e.jayefem.de/index.php/Download

Eclipse的安装目录下,找到对应的pluginsfeatures文件夹,将解压后得到的两个文件pluginsfeatures下对应的文件拷贝到相应的目录下。

重启Eclispse后,就可以使用Log4e插件了,如果看不到插件,把Eclipse安装目录下的configuration/org.eclipse.update/目录整个删除,重启Eclipse

 

log4j:log for java

日志框架的作用:

1、程序运行中,传入的参数正不正确

2、软件的稳定期内,记录用户的每一步操作

3、控制目的地:打印到控制台、文件、db

4、日志级别:某一句输出设置一定的级别,如果控制大于等于这个级别,就输出

5、格式:在输出的主信息外,还可以添加附加信息

 

1、每一行都是键值对,key=value

2#表示注释

3properties文件本身不支持中文,eclipse装了properdit插件,所以支持中文

 

log4j由三个重要的组件构成:日志信息的输出格式,日志信息的优先级,日志信息的输出目的地。日志信息的优先级用来指定这条日志信息的重要程度:日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式控制了日志信息的显示内容。

  1. 第一步添加log4j.jar包。
  2. 解析log4j.properties文件是如何配置的?配置文件如下:


5p%用五个空格补齐。tim.log是相对路径。

 

最常用的PatternLayout

%m输出代码中指定的消息

%p输出优先级,即DEBUGINFOWARNERRORFATAL

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

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

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

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

%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy-MM-dd HH:mm:ss} %5p {%C:%M} - %m%n,输出类似:2016-01-06 00:05:54 DEBUG { com. chen. test. testLog4j : main } – 我是信息

 

几个重要原则:

  1. 级别的控制,就是只要大于等于指定的控制级别,就可以输出
  2. 如果有多个logger,都可以匹配输出,则每个logger都产生输出,其中根logger匹配所有的输出,而级别控制来源于最详细的logger

范例1:如果对一个logger设置了级别是info,那么打印出来的是大于等于info的级别。


结果只打印出大于等于info级别的日志:


范例2:如果一条信息,设置了多个logger托管,level取最详细的,appernder各自输出,也就是说,最详细的说了算。


Log4j.logger.com.chen覆盖了log4j.logger.comdebug,两个logger打印出来的等级都必须是大于等于info


Log4j.rootLogger = debug.timchen.File, timchen.Console

其中,rootLogger表示根logger,相应Classpath路径下所有的类。如:


 

AppenderLayoutLogger三者之间的关系:

  1. 每个Appender都要引用自己的layout
  2. 每个Logger都可以指定一个级别,同时引用多个Appender;而每一个Appender也同时被多个Logger引用。

java中使用log4j中要注意的小问题:

看似奇怪的重复级别判断:我们在看一些成熟框架的源代码中,经常看到如下代码:


为什么不直接looger.debug(“debug:”+name)呢?因为在配置文件中虽然可以使用控制级别为比debug级别更高的级别,而不输出debug信息;但是这里的字符连接操作仍然会影响运行效率;如果先判断当前的logger的级别,如果级别不合适的话,连这句话都可以不做了。

 

Log4j.xmllog4j.properties同时存在时,以log4j.xml为准

 

Slf4j简介

简单日记门面(simple logging Façade for javaSLF4J是为各种logging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的logging APIs实现。

准确的说,slf4j并不是一种具体的日志系统,而是一个用户日志系统的façade,允许用户在部署最终应用时方便的变更其日志系统。

在系统开发中,统一按照slf4jAPI进行开发,在部署时,选择不同的日志系统包,即可自动转换到不同的日志系统上。比如:选择JDK自带的日志系统,则需要将slf4j-api-1.5.10.jarslf4j-jdk14-1.5.10.jar放置到classpath中即可,如果中途无法忍受JDK自带的日志系统了,想换成log4j的日志系统,仅需要用slf4j-log4j12-1.5.10.jar替换slf4j-jdk14-1.5.10.jar即可(当然也需要log4jjar包及配置文件)。

 

我们的类不在直接与log4j的类或者logging类相接触,而是多了sl4j-api,和相应的日志系统的适配器的jar包,其流图如下:

 


 

在下载的sl4j的文件下找到,这两个jar包,并且添加到lib下:


当然,如果是用lo4j,则原有的log4jjar包也要添加:


原有的通过Log4jnew logger的写法如下:


利用slf4j改写后,注意其中的两个引入包:


 

0 0