现在的位置: 首页 > 综合 > 正文

log4j HTMLLayout和WriterAppender学习

2018年02月03日 ⁄ 综合 ⁄ 共 2401字 ⁄ 字号 评论关闭

 

package democreen.log4jexamples2;

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("src/democreen/log4jexamples2/output2.html");

   appender = new WriterAppender(layout, output);

   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");

  } catch (Exception e) {
  }
 }
}

 

运行文件后,output2.html文件

Logger

日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。

Ø        DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的。

Ø        INFO: 消息在粗粒度级别上突出强调应用程序的运行过程。

Ø        WARN:表明会出现潜在错误的情形。

Ø        ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行。

Ø        FATAL:指出每个严重的错误事件将会导致应用程序的退出。

 

两个可用的特别的日志记录级别:

Ø        ALL:是最低等级的,用于打开所有日志记录。

Ø        OFF:是最高等级的,用于关闭所有日志记录。

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

 

日志记录器(Logger)的行为是分等级的。

***日志记录器(Logger)将只输出那些级别高于或等于它的级别的信息。如果没有设置日志记录器(Logger)的级别,那么它将会继承最近的祖先的级别。因此,如果在包com.foo.bar中创建一个日志记录器(Logger)并且没有设置级别,那它将会继承在包com.foo中创建的日志记录器(Logger)的级别。如果在com.foo中没有创建日志记录器(Logger)的话,那么在com.foo.bar中创建的日志记录器(Logger)将继承root 日志记录器(Logger)的级别,root日志记录器(Logger)经常被实例化而可用,它的级别为DEBUG。

 

有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器:

Logger logger = Logger.getRootLogger();

Logger logger = Logger.getLogger("MyLogger");

比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:

static Logger logger = Logger.getLogger(test.class);

 

所有这些创建的叫"logger"的日志记录器都可以用下面方法设置级别:

logger.setLevel((Level)Level.WARN);

可以使用7个级别中的任何一个: Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.

 

 

 

Appender

Appender 控制日志怎样输出。

Ø        WriterAppender: 根据用户的选择把日志事件写入到Writer或者OutputStream。

 

使用WriterAppender

WriterAppender可以用这种方式创建:

WriterAppender appender = null;

try {

appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename"));

} catch(Exception e) {}

这个WriterAppender使用的构造函数带有PatternLayout和OutputStream参数,在这种情况下, FileOutputStream用于向一个文件输出。

 

Layout

Appender必须使用一个与之相关联的 Layout,这样它才能知道怎样格式化它的输出。当前,log4j具有三种类型的Layout:

Ø        HTMLLayout 格式化日志输出为HTML表格。

Ø        PatternLayout 根据指定的 转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。

Ø        SimpleLayout 以一种非常简单的方式格式化日志输出,它打印级别 Level,然后跟着一个破折号“-“ ,最后才是日志消息。

抱歉!评论已关闭.