Chinaunix首页 | 论坛 | 博客
  • 博客访问: 297378
  • 博文数量: 115
  • 博客积分: 1951
  • 博客等级: 上尉
  • 技术积分: 728
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-26 14:05
文章分类

全部博文(115)

文章存档

2013年(4)

2012年(3)

2011年(26)

2010年(56)

2009年(26)

我的朋友

分类: Java

2011-09-26 14:55:05

转自:http://blog.csdn.net/wlq1983/article/details/2827638

1. 简介
2. 安装
3. log4j基本概念
3.1. Logger
3.2. Appender
3.2.1. 使用ConsoleAppender
3.2.2. 使用FileAppender
3.2.3. 使用WriterAppender
3.3. Layout
3.4. 基本示例
3.4.1. SimpleLayout和FileAppender
3.4.2. HTMLLayout和WriterAppender
3.4.3. PatternLayout和ConsoleAppender
4. 使用外部配置文件
5. 参考资料 (以及一些有参考价值的链接)

  1. 从 下载log4j发行版。

  2. 解压存档文件到合适的目录中。

  3. 添加文件 dist/lib/log4j-1.2.6.jar 到 CLASSPATH 环境变量中。

):

  • static Level DEBUG

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

  • static Level INFO

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

  • static Level WARN

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

  • static Level ERROR

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

  • static Level FATAL

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

另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j API ):

  • static Level ALL

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

  • static Level OFF

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

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

Logger logger = Logger.getRootLogger();

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

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

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

):

  1. ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。

  2. DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。

  3. FileAppender 把日志事件写入一个文件

  4. RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。

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

  6. SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。

  7. SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。

  8. SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。

  9. SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。

  10. TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。

还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。

ConsoleAppender appender = new ConsoleAppender(new PatternLayout());

FileAppender appender = null;
 try { appender = new FileAppender(new PatternLayout(),"filename"); } catch(Exception e) {}

FileAppender(Layout layout, String filename)
实例化一个FileAppender并且打开变量"filename"指定的文件。

FileAppender(Layout layout, String filename, boolean append)实例化一个FileAppender并且打开变量"filename"指定的文件。

WriterAppender appender = null;
try {
   appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename"));
}
catch(Exception e)
{}

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;
public class simpandfile {
   static Logger logger = Logger.getLogger(simpandfile.class);
   public static void main(String args[]) {
   SimpleLayout layout = new SimpleLayout();
   FileAppender appender = null;
   try
    { appender = new FileAppender(layout,"output1.txt",false); }   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");
  }
}

simpandfile.java。 还可以查看它的输出: output1.txt.

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

simpandfile.java. 还可以查看它的输出:output1.txt.

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

simpandfile.java. 还可以查看它的输出: output2.txt.

DOMConfigurator.configure("configurationfile.xml");

plainlog4jconfig.xml。这里是执行该配置文件的程序: files/externalxmltest.java:

import org.apache.log4j.Logger;import org.apache.log4j.xml.DOMConfigurator;public class externalxmltest { static Logger logger = Logger.getLogger(filetest.class); public static void main(String args[]) { 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"); }}

这里是一个实现带有PatternLayoutFileAppender的日志记录器Logger的XML配置文件:

你可以从这里下载示例: xmllog4jconfig2.xml。 想要得到更多的使用XML文件配置log4j环境的例子,请查看log4j发行版的目录src/java/org/apache/log4j/xml/examples/ 。

这就是上面讨论的文本文件形式的配置文件:

# initialise root logger with level DEBUG and call it BLAHlog4j.rootLogger=DEBUG, BLAH# add a ConsoleAppender to the logger BLAHlog4j.appender.BLAH=org.apache.log4j.ConsoleAppender# set set that layout to be SimpleLayoutlog4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout

从这里可以下载: plainlog4jconfig.txt。这就是执行该配置文件的程序:

import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class externalplaintest { static Logger logger = Logger.getLogger(externalplaintest.class); public static void main(String args[]) { PropertyConfigurator.configure("plainlog4jconfig.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"); }}

你可以下载使用该配置文件的示例: externalplaintest.java。想要获得更多的使用文本文件配置log4j环境的例子,请查看log4j发行版中的目录examples。

使用外部配置文件的例子就简单的讨论到这里,现在应该可以肯定你已经有能力独立学习更多的log4j发行版和测试版中提供的例子。

  • log4j的简明介绍 - Ceki G- 2002年3月

  • 不要用System.out.println!用Log4j - Vipan Singla

  • LOG4J / OpenSymphony日志记录入门

  • 给你的Java应用程序添加日志记录 - Kevin Brown

阅读(1063) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~