您的位置:首页 > 其它

详解Log4j

2015-10-07 13:02 330 查看
 

  在做开发过程中,肯定会遇到各种问题,如果此时如果没有一个好的日志工具的话,那就是逆天了,遇到各种问题的时候,就像无头的苍蝇四处乱撞,没有头绪,因此如果有一个好的日志工具的话,我们就能立即锁定到问题的所在。及时把问题给解决掉,网上有很多好的日志工具http://www.open-open.com/29.htm,所有的工具都很好学习,只要找份官方说明书即可,也就是我们所说的API文档,小编就来介绍一下常用的Log4j的日志工具。

 

  简单实例

  新建立一个javaProject项目,引入log4j-1.2.17.jar即可,然后在classpath下面建立log4j.properties配置文件,其中内容如下

<span style="font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> ### \u8BBE\u7F6E###
## rootLogger
##log4j.rootLogger = debug,stdout,D,E
log4j.logger.com.log=debug,stdout,D,E,F

### \u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u62AC ###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### \u8F93\u51FADEBUG \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### \u8F93\u51FAERROR \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E\://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

log4j.appender.F = org.apache.log4j.DailyRollingFileAppender
log4j.appender.F.File = E\://logs/logHTML.html
log4j.appender.F.Append = true
log4j.appender.F.Threshold = DEBUG
log4j.appender.F.layout = org.apache.log4j.HTMLLayout
log4j.appender.F.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
</span></span>


 然后新建测试类Test如下所示

<span style="font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">package com.test;

import org.apache.log4j.Logger;
/**
* @FileName: Test.java
* @Package:
* @Description: TODO
* @author: LUCKY
* @date:2015年10月7日 上午10:19:31
* @version V1.0
*/

/**
* @ClassName: Test
* @Description: TODO
* @author: LUCKY
* @date:2015年10月7日 上午10:19:31
*/

public class Test {
private static Logger logger = Logger.getLogger(Test.class);

public static Test test=new Test();
/**
* @param args
*/
public static void main(String[] args) {
// System.out.println("This is println message.");

// 记录debug级别的信息

/* logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");  */

test.add();
}

//jjjkkkkkk
public  void add(){
// System.out.println("This is println message.");

// 记录debug级别的信息
try {
logger.info(this.getClass().getName()+"This is info message.");

/// jjjj
// 记录error级别的信息
} catch (Exception e) {
// TODO: handle exception

logger.error(e);
}
logger.debug(this.getClass().getName()+"This is debug message.");
// 记录info级别的信息

test.add();
}

public void delete(){
try {
test.update();
} catch (Exception e) {
logger.debug(this.getClass().getName()+e.getMessage());
e.printStackTrace();
}
}

public void update() throws Exception {
try {
int i=5;
int z=0;
int f=i/z;

} catch (Exception e) {
throw e;
}
}
}
</span></span>


  最后运行的时候,看看控制台是否输出东西,并且在上的配置文件中所配置的路径中,是不是有日志文件输出呢,所以通过一个简单的实例,来入门让大家能够对log4j有一个初步的认识。

 
有了一个初步的认识,下面来详细的介绍一下有关Log4j的配置内容


1、配置根Logger

其语法为: log4j.rootLogger = [ level ] , appenderName, appenderName2
level:日志的级别,指定这条日志信息的重要性。分为ALL < DEBUG < INFO < WARN < ERROR < FATAL。一般常用的为 DEBUG , INFO ,WARN ,ERROR四种,分别对应Logger类的四种方法

 debug(Object message ) ;
 info(Object message ) ;
 warn(Object message ) ;
 error(Object message ) ;


如果设置级别为INFO,则优先级大于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如:DEBUG将不会被输出
appenderName :就是指定日志信息输出目的地,比如(打印到控制台,输出到文件等)。同一条日志信息可以配置多个输出目的地。


2、配置log输出目的地

 Log4j提供以下几种:

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


3、log信息的格式

 org.apache.log4j.HTMLLayout(HTML表格形式)
 org.apache.log4j.SimpleLayout(简单格式的日志,只包括日志信息的级别和指定的信息字符串 ,如:DEBUG - Hello)
 org.apache.log4j.TTCCLayout(日志的格式包括日志产生的时间、线程、类别等等信息)
 org.apache.log4j.PatternLayout(灵活地自定义日志格式)
当使用org.apache.log4j.PatternLayout来自定义信息格式时,可以使用
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p -%m%n 来格式化信息


%c    输出所属类的全名,可写为 %c{Num} ,Num类名输出的范围  如:"com.sun.aaa.classB", %C{2}将使日志输出输出范围为:aaa.classB
%d    输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等
%l    输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n    换行符
%m    输出代码指定信息,如info(“message”),输出message
%p    输出日志的优先级,即 FATAL ,ERROR 等
%r    输出从启动到显示该条日志信息所耗费的时间(毫秒数)
%t    输出产生该日志事件的线程名
更详细参数信息可参看类org.apache.log4j.PatternLayout的API doc文档

没了就这么多了,最终就是通过上面的配置文件进行配置,主要是用来以我们想要的格式,来输出想要的内容操作。最后简单总结下

Logger类:完成日志记录,设置日志信息级别
Appender类:决定日志去向,终端、DB、硬盘
Layout类:决定日志输出的样式,例如包含当前线程、行号、时间

 更多的请参考http://swiftlet.net/archives/683
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: