Apache log4j的官方介绍是“log4j is a reliable, fast and flexible logging framework (APIs) written in Java, which is distributed under the Apache Software License. log4j is highly configurable through external configuration files at runtime. It views the logging process in terms of levels of priorities and offers mechanisms to direct logging information to a great variety of destinations, such as a database, file, console, UNIX Syslog, etc.”,翻译过来就是:log4j是基于Apache Software License发行的可靠、快速、可扩展的日志框架。log4j具备高可配置性,能够在运行的过程当中经过外部文件配置它。log4j可以根据不一样的级别优先权来过滤日志,而且提供了一种机制,可以将日志记录直接写到控制台,文件,数据库,UNIX系统日志等。数据库
上面的官方介绍,不光对log4j进行了定义,也对log4j的特色性能进行了阐述。log4j主要由logger(记录器),appender(输出源),layout(布局模式)三部分组成,其中logger用来捕获日志信息,layout用来对日志信息进行格式化,appender用来定义日志的输出源。具体的架构能够参加下图:apache
log4j的安装方式与添加普通的.jar类库文件相同,能够到官网(http://logging.apache.org/log4j/2.x/)下载相关的包,有区别的是log4j须要添加上面提到的配置文件。架构
那么配置文件应该如何写呢?app
log4j配置文件,全称为“log4j.properties”,采用key-value的形式保存参数,也能够采用XML文档形式来编写配置参数。通常状况下,log4j.properties须要包含过滤级别,日志目录,日志文件名,输出源,输出源的详细实现类,布局模式,以及相应的格式化参数等配置信息,详细内容以下:框架
过滤级别:ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL布局
输出源:FILE,DB,Console,对应的详细实现类为org.apache.log4j.FileAppender,org.apache.log4j.JDBCAppender,org.apache.log4j.ConsoleAppender。性能
布局模式:PatternLayout,HTMLLayout,其中PatternLayout的相应格式化参数(%[])以下表:flex
C | 输出发出日志记录请求的类的彻底限定名,如org.example.demo.Test; |
d | 输出发生日志记录事件的日期,如%d{HH:mm:ss}; |
m | 输出与日志记录事件相关联的应用程序的信息; |
M | 输出发出日志记录请求的方法的名称; |
n | 输出与系统平台相关的换行符; |
p | 输出日志的过滤级别; |
X | 输出发出日志记录请求的客户端的IP,如X{clientIP}; |
一个采用key-value形式的具体示例以下:ui
# Define the root logger and the directory of log file. logDir = E:/temp log4j.rootLogger = DEBUG, FILE # Define the file appender log4j.appender.FILE = org.apache.log4j.FileAppender log4j.appender.FILE.File = ${logDir}/log.txt # Define the layout for the file appender log4j.appender.FILE.layout = org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern = %m%n
log4j.properties配置文件分为三部分,第一部分配置了日志文件的保存目录logDir,同时说明将日志的过滤级别设置为DEBUG,输出源是FILE;第二部分配置了输出源的详细实现类org.apache.log4j.FileAppender,日志文档名称log.txt;第三部分则规定了日志文档的布局模式PatternLayout,及详细的格式化参数%m%n。spa
上述配置文件的示例用XML形式编写后以下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="FILE" class="org.apache.log4j.FileAppender"> <param name="file" value="E:temp/log.txt"/> <param name="immediateFlush" value="true"/> <param name="threshold" value="debug"/> <param name="append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="conversionPattern" value="%m%n"/> </layout> </appender> <logger name="log4j.rootLogger" additivity="false"> <level value="DEBUG"/> <appender-ref ref="FILE"/> </logger> </log4j:configuration>
配置完log4j.properties是否是就能够编写Java程序运行了?
其实,到这里log4j的配置工做尚未结束,还须要肯定log4j.properties文件应该放置在哪一个位置。官方介绍说log4j.properties应该放置到PATH或者CLASSPATH所在目录当中,可是若是按照这样操做,遇到每一个Java工程都须要定制配置文件问题时,将会很容易形成命名冲突。合适的做法是将log4j.properties与具体的Java工程关联,将log4j.properties放置到src包中。或者用一种更值得推荐的作法:在Java工程根目录下新建config目录 > 将log4j.properties放置到config目录中 > 鼠标右击config目录 > 选择Build Path > 单击Use as Source Folder。
如今就能够写个Java类运行一下了,示例以下:
1 package org.warnier.zhang.demo; 2 3 import org.apache.log4j.Logger; 4 5 public class Test { 6 /** 7 * 得到记录器; 8 */ 9 static Logger logger = Logger.getLogger(Test.class); 10 11 public static void main(String[] args) { 12 logger.debug("DEBUG > Hello World!"); 13 logger.info("INFO > Hello World!"); 14 } 15 16 }
到此,Apache log4j简明教程(一)就结束了,下一讲将会讲解如何将日志输出到MySQL数据库。但愿次教程可以给有困扰的读者一点帮助。固然,因为笔者水平有限,若是有错误,欢迎读者留言交流。