java 日志技术汇总(log4j , Commons-logging,.....) (一)

2014-11-24 09:56:22 · 作者: · 浏览: 0

前言
在java 中实现记录日志的方式有很多种,

1. 最简单的方式,就是system.print.out ,err 这样直接在控制台打印消息了。

2. java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中写日志了。

3. log4j , 最强大的记录日志的方式。 可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。

4. commons-logging, 最综合和常见的日志记录方式, 经常是和log4j 结合起来使用。

java.util.logging --JDK 记录日志方式

system.print 这就不用多说了,


直接看一下java api 中 logging 日志的使用例子:


[java]
/**
* @author oscar999
* @date 2013-8-1
* @version V1.0
*/
package com.oscar999.log;

import java.io.IOException;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;


public class TestLogJava {

public static void main(String[] args) throws IOException{
Logger log = Logger.getLogger("tesglog");
log.setLevel(Level.ALL);
FileHandler fileHandler = new FileHandler("testlog.log");
fileHandler.setLevel(Level.ALL);
fileHandler.setFormatter(new LogFormatter());
log.addHandler(fileHandler);
log.info("This is test java util log");
}

}

class LogFormatter extends Formatter {
@Override
public String format(LogRecord record) {
Date date = new Date();
String sDate = date.toString();
return "[" + sDate + "]" + "[" + record.getLevel() + "]"
+ record.getClass() + record.getMessage() + "\n";
}

}

/**
* @author oscar999
* @date 2013-8-1
* @version V1.0
*/
package com.oscar999.log;

import java.io.IOException;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;


public class TestLogJava {

public static void main(String[] args) throws IOException{
Logger log = Logger.getLogger("tesglog");
log.setLevel(Level.ALL);
FileHandler fileHandler = new FileHandler("testlog.log");
fileHandler.setLevel(Level.ALL);
fileHandler.setFormatter(new LogFormatter());
log.addHandler(fileHandler);
log.info("This is test java util log");
}

}

class LogFormatter extends Formatter {
@Override
public String format(LogRecord record) {
Date date = new Date();
String sDate = date.toString();
return "[" + sDate + "]" + "[" + record.getLevel() + "]"
+ record.getClass() + record.getMessage() + "\n";
}

}
这里是在eclipse 下code 和测试的。

首先定义一个Logeer的实例,并设置log 的级别,接着添加一个fileHander ,就是把日志写到文件中。在写入文件的时候,定义一个 LogFormatter对日志进行格式的渲染。


默认状况下, 日志会打印到控制台。添加filehandler 后, 会同时写入文件。 如不指定路径,日志文件将位于项目根路径下。

log4j 记录日志方式

log4j 是apache 提供的记录日志的jar 档。

这里要做的事情稍微要多一些:

1. 下载log4j 的jar 包,放入项目的lib 包中(添加到项目的build path中)。

2. 配置log4j.properties, 并放入项目的根路径下.(也可以放入其他路径,在读的时候需要指定)

看一下一个配置实例:


[html]
log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logfile.log
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
lo