博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4j入门教程
阅读量:4053 次
发布时间:2019-05-25

本文共 6478 字,大约阅读时间需要 21 分钟。

译文来源: 
特别提示:文章中提到的下载链接请到原文中下载    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.jarCLASSPATH 环境变量中。

):

  • 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

转载地址:http://pltci.baihongyu.com/

你可能感兴趣的文章
类加载器的工作原理
查看>>
JVM 垃圾回收机制主要原理
查看>>
java工程师的职业规划
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下集成SVN
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
itellij idea导入web项目并部署到tomcat
查看>>
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener
查看>>
Java compiler level does not match解决方法
查看>>
数据库事务的四大特性以及事务的隔离级别
查看>>
事务的四种隔离级别和七种传播机制
查看>>
spring的4种事务特性、4种隔离级别、7种传播行为
查看>>
MySQL 8.0.12安装教程(windows 64位)
查看>>
IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)
查看>>
详解centos6和centos7防火墙的关闭
查看>>
Redis集群与插槽分配(动态新增或删除结点)
查看>>
rediscluster报错:Node is not empty
查看>>
IDEA中Git的使用
查看>>
安装kafka_2.12-2.0.0
查看>>