当前位置:编程学习 > JAVA >>

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

前言
在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 
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n 

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
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
这里指定了日志输出的级别 debug.

stdout, logfile 指定日志输出的目的地。 这两个名字可以随便取,比如 A, 或B都可以。 实际的配置是  org.apache.log4j.ConsoleAppender 和RollingFileAppender  用于指定是控制台还是文件。

另外还指定了输出的格式, 已经产生的file 的规则。


3. 测试java 文件


[java]
/**   
 * @author oscar999   
 * @date 2013-8-1
 * @version V1.0   
 */ 
package com.oscar999.log; 
 
import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 
 
public class TestLog4j { 
 
    public static void main(String[] args) { 
        // 1. create log  
        Logger log = Logger.getLogger(TestLog4j.class); 
        // 2. get log config file  
        PropertyConfigurator.configure("log4j.properties"); 
        // 3. start log  
        log.debug("Here is some DEBUG"); 
        log.info("Here is some INFO"); 
        log.warn("Here is some WARN"); 
        log.error("Here is some ERROR"); 
        log.fatal("Here is some FATAL"); 
  &nb

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,