设为首页   |  加入收藏夹 快速导航:  热门文章  |  最新文章  |  梦想博客  
当前位置:编程之家 -> 文章频道 ->java 
站内搜索:  

log4j日志使用详解(2)

作者:随缘屋 来源:随缘屋 整理日期:2007-03-23

 4.1.2. HTMLLayout 和 WriterAppender


import java.io.*;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.HTMLLayout;
import org.apache.log4j.WriterAppender;
public class htmlandwrite {
   static Logger logger = Logger.getLogger(htmlandwrite.class);
   public static void main(String args[]) {
      HTMLLayout layout = new HTMLLayout();

      WriterAppender appender = null;
      try {
         FileOutputStream output = new FileOutputStream("output2.html");
         appender = new WriterAppender(layout,output);
      } catch(Exception e) {}

      logger.addAppender(appender);
      logger.setLevel((Level) Level.DEBUG);

      logger.debug("Here is some DEBUG");
      logger.info("Here is some INFO");
      logger.warn("Here is some WARN");
      logger.error("Here is some ERROR");
      logger.fatal("Here is some FATAL");
   }
}
       
 

4.1.3. PatternLayout and ConsoleAppender

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.ConsoleAppender;
public class consandpatt {
   static Logger logger = Logger.getLogger(consandpatt.class);
   public static void main(String args[]) {

      // Note, %n is newline
      String pattern =  "Milliseconds since program start: %r %n";
             pattern += "Classname of caller: %C %n";
             pattern += "Date in ISO8601 format: %d{ISO8601} %n";
             pattern += "Location of log event: %l %n";
             pattern += "Message: %m %n %n";
     
      PatternLayout layout = new PatternLayout(pattern);
      ConsoleAppender appender = new ConsoleAppender(layout);

      logger.addAppender(appender);
      logger.setLevel((Level) Level.DEBUG);

      logger.debug("Here is some DEBUG");
      logger.info("Here is some INFO");
      logger.warn("Here is some WARN");
      logger.error("Here is some ERROR");
      logger.fatal("Here is some FATAL");
   }
}

4.2 使用配置文件来定义输出Appender和布局格式Layout
 log4j支持两种方式的配置方式,.properties 二进制文件和xml文件的方式。我们简单讲一下.properties的配

置方式后,将主要讨论xml文件的配置方式。
 
 4.2.1  我们将以.properties文件的格式定义两种输出方式,一种是输出到文件中,另一种是输出到数据库中


 
 首先定义simple.properties文件,文件定义如下:
 
 #定义了两个输出端
 log4j.rootLogger = INFO,f,db


 # 定义f输出到文件,并且文件是随着大小而增加的
 log4j.appender.f = org.apache.log4j.RollingFileAppender 
 log4j.appender.f.File = F:\\nepalon\\classes\\test1.log 
 log4j.appender.f.MaxFileSize = 1000KB 
 log4j.appender.f.MaxBackupIndex = 3 
 log4j.appender.f.layout = org.apache.log4j.PatternLayout
 
 log4j.appender.f.layout.ConversionPattern = %d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n

 #定义db输出到数据库
 log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender
 log4j.appender.db.BufferSize = 40
 log4j.appender.db.Driver = com.microsoft.jdbc.sqlserver.SQLServerDriver
 log4j.appender.db.URL = jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test
 log4j.appender.db.User = sa
 log4j.appender.db.Password =
 log4j.appender.db.layout = org.apache.log4j.PatternLayout
 log4j.appender.db.layout.ConversionPattern = INSERT INTO log4j (createDate, thread, priority,

category, message) values(%d{ISO8601}, %t, %-5p, %c, %m)

 然后程序中将引用这配置文件。定义如下:

 import org.apache.log4j.Logger;
 import org.apache.log4j.xml.DOMConfigurator;

 public class Test {
 
     static Logger logger = Logger.getLogger(Test.class);
     public static void main(String args[]) {
         //以property方式读到配置文件。
   PropertyConfigurator.configure ( "simple.properties" ) ;
 
         logger.debug("Here is some DEBUG");
         logger.info("Here is some INFO");
         logger.warn("Here is some WARN");
         logger.error("Here is some ERROR");
         logger.fatal("Here is some FATAL");
     }
 }


 4.2.2 以xml配置

 程序如下:
 import org.apache.log4j.Logger;
 import org.apache.log4j.xml.DOMConfigurator;

 public class Test {
 
     static Logger logger = Logger.getLogger(Test.class);
     public static void main(String args[]) {
         //以XML方式读到配置文件。
    DOMConfigurator.configure("xmllog4jconfig.xml");

 
         logger.debug("Here is some DEBUG");
         logger.info("Here is some INFO");
         logger.warn("Here is some WARN");
         logger.error("Here is some ERROR");
         logger.fatal("Here is some FATAL");
     }
 }


[1]  [2]  [3]