日志工具jdklogging,log4j和commons-logging

来源:互联网 发布:天佑为什么这么火 知乎 编辑:程序博客网 时间:2024/05/18 00:27

1。  jdk从1.4开始自带了日志功能,其优点是不需要类库的支持偏可以使用。然后其易用性,功能性却很差,因此很少使用。

        jdk logging把日志分为几个级别:all,finest,finer,fine,config,info,warning,servere,off等,级别依次升高。如果把级别设为info,

        则以前的不会输出。

          例如(jdk1.6为例): 

import java.util.logging.ConsoleHandler;import java.util.logging.Handler;import java.util.logging.Level;import java.util.logging.Logger;public class JDKLogTest { public static Logger log = Logger.getLogger(JDKLogTest.class.toString()); static{  Handler console=null;  console = new ConsoleHandler(); /* try {   console = new FileHandler("filelog.log");  } catch (SecurityException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }*/  console.setLevel(Level.FINE);  log.addHandler(console); } public static void main(String[] args) {  log.setLevel(Level.FINE);  log.finest("finest");  log.finer("finer");  log.fine("fine");  log.config("config");  log.info("info");  log.warning("warning");  log.severe("servere");   }} 

输出的日志效果如下(info以上默认会输出一次,因此看到2次):

  2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
良好: fine
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
配置: config
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
信息: info
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
信息: info
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
警告: warning
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
警告: warning
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
严重: servere
2012-9-13 22:05:06 com.logging.jdk.JDKLogTest main
严重: servere

  如果需要输出到日志文件,需要用FileHandler,然后日志格式却为xml格式,可读性较差。

2。   Log4j是目前应用最广泛的日志控件,他把日志分为All,TRACE,DEBUG,INFO,WARNING,ERROR,FITAL,OFF几个比界,级别依次升高,

        级别高的LEvel屏蔽级别低的信息。

        开发步骤如下:

         a)添加类库log4j-1.2.13.jar.

         b)编写log4j.properties配置文件。

            例如:

log4j.rootLogger=INFO,A1,defaultLogger

#输出到控制台:

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{MM-dd HH:mm:ss}: %c[%t]-%-5p:%m%n
   

#每天生成一个文件         

log4j.appender.defaultLogger=org.apache.log4j.DailyRollingFileAppender
log4j.appender.defaultLogger.File=H:\\workspace\\loggtest\\logs\\default.log
log4j.appender.defaultLogger.Encoding=UTF-8

log4j.appender.defaultLogger.Threshold=error   #文件只保存error以上的日志
log4j.appender.defaultLogger.DatePattern='.'yyyyMMdd
log4j.appender.defaultLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.defaultLogger.layout.ConversionPattern=%d{MM-dd HH:mm:ss}: %c[%t]-%-5p:%m%n

  c)编写代码如下: 

package com.logging.log4j;

import org.apache.log4j.Logger;
public class Log4jTest {

 private static Logger log = Logger.getLogger(Log4jTest.class);
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  log.trace("trace");  
  log.debug("debug");
  log.info("info");
  log.warn("warn");
  log.error("error");
  log.fatal("fatal");
  
  try{
   String s = null;
   s.length();
  }catch(Exception e){
   log.trace("trace一个异常",e);  
   log.debug("debug一个异常",e);
   log.info("info一个异常",e);
   log.warn("warn一个异常",e);
   log.error("error一个异常",e);
   log.fatal("fatal一个异常",e);
  }
 }
}

控制台日志输出结果为:

  09-13 22:29:07: com.logging.log4j.Log4jTest[main]-INFO :info
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-WARN :warn
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-ERROR:error
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-FATAL:fatal
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-INFO :info一个异常
java.lang.NullPointerException
 at com.logging.log4j.Log4jTest.main(Log4jTest.java:19)
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-WARN :warn一个异常
java.lang.NullPointerException
 at com.logging.log4j.Log4jTest.main(Log4jTest.java:19)
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-ERROR:error一个异常
java.lang.NullPointerException
 at com.logging.log4j.Log4jTest.main(Log4jTest.java:19)
09-13 22:29:07: com.logging.log4j.Log4jTest[main]-FATAL:fatal一个异常
java.lang.NullPointerException
 at com.logging.log4j.Log4jTest.main(Log4jTest.java:19)
文件日志为:

09-13 22:32:57: com.logging.log4j.Log4jTest[main]-ERROR:error
09-13 22:32:57: com.logging.log4j.Log4jTest[main]-FATAL:fatal
09-13 22:32:57: com.logging.log4j.Log4jTest[main]-ERROR:error涓�涓紓甯�
java.lang.NullPointerException
 at com.logging.log4j.Log4jTest.main(Log4jTest.java:19)
09-13 22:32:57: com.logging.log4j.Log4jTest[main]-FATAL:fatal涓�涓紓甯�
java.lang.NullPointerException
 at com.logging.log4j.Log4jTest.main(Log4jTest.java:19)
注意:log4j.appender.defaultLogger.Threshold=error,可以单独为每个Appender设置日志级别。

 

原创粉丝点击