1.Log4j的全程为Log for Java。专门用于java语言的日志记录工具。其目前有两个版本:Log4j和Log4j2

 

2.为了方便对于日志信息的输出显示,对日志内容进行了分级管理。日志级别由高到低,分为6个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)

 

3.无论是将日志输出到控制台,还是文件,其输出都会降低程序的运行效率。但由于调试、运行维护的需要,客户的要求等原因,需要进行必要的日志输出。这时就必须要在代码中加入日志输出语句。这些输出语句若在程序运行时全部执行,则势必会降低运行效率。

 

 

4.下载jar包,log4j.properties直接放到项目的src下

Logger logger = Logger.getLogger(Test.class);

log4j.properties是专门用于控制日志输出的。其主要进行三方面控制:

输出位置:控制日志将要输出的位置,是控制台还是文件等

输出布局:控制日志信息的显示形式

输出级别:控制要输出的日志级别

 

日志属性文件由两个对象组成:日志附加器与根日志。

根日志:为java代码中的日志记录器,其主要由两个属性构成:日志输出级别与日志附加器

日志附加器,则由日志输出位置定义,由其它很多属性进行修饰,如输出布局、文件位置、文件大小。

 

5.log4j.appender.console = org.apache.log4j.ConsoleAppender; org.apache.log4j.ConsoleAppender;日志输出到控制台

org.apache.log4j.FileAppender:日志输出到文件

org.apache.log4j.RollingFileAppender:当日志文件大小到达指定尺寸的时候将产生一个新的日志文件

org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件

 

log4j.appender.console.Target = System.out

Target控制输出到控制台的使用目标。其值为System.out或System.err。它们的区别是,out是黑色字体,err是红色字体

 

log4j.appender.file.File = d:/logfile.txt

File日志要输出的文件位置以及文件名称

 

滚动文件附加器

log4j.appender.rollfile = org.apache.log4j.RollingFileAppender

log4j.appender.rollfile.MaxFileSize = 10KB

若文件超过指定值,将自动产生另一个日志文件

 

log4j.apender.rollfile.layout = org.apache.log4j.HTMLLayout

org.apache.log4j.HTMLLayout:网页布局,以 HTML 表格形式布局

org.apache.log4j.SimpleLayout:简单布局,包含日志信息的级别和信息字符串

org.apache.log4j.PatternLayout:匹配器布局,可以灵活地指定布局模式。

 

根配置根 Logger

配置 rootLogger,以便于代码加载来控制日志的输出。其语法为:

log4j.rootLogger = [ level ] , appenderName, …

其中,level 是日志记录的优先级,分为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。OFF 为关闭日志功能。

低级别的可以显示高级别的,但高级别的不能显示低级别的。所以,级别越高,将来显示的信息就越少

 

 

 

6.Log4j2 是对 Log4j 的升级,其在配置与使用上发生了较大变化。

 

使用 Log4j2,需要导入其 Jar 包。Log4j 框架解压目录中找到如下两个 jar 包:

log4j-api-2.3.jar  log4j-core-2.3.jar

 

将文件 log4j2.xml 直接放到项目的 src 下。log4j2 配置文件是 XML 文件,不再支持properties 文件。默认的文件名为 log4j2.xml。其存放的位置为 classpath 中

 

在要输出日志的类中创建日志对象 Logger,并通过 Logger 的方法在代码中加入日志输出语句。该日志对象是通过静态类 LogManager 的 getLogger()方法获取的。

注意,Logger 与 LogManager 均为 org.apache.logging.log4j 包中的类,org.apache.log4j包中的。

 

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

 

Logger logger = LogManager.getLogger(Test.class);

 

 

7.配置文件说明:

 

<configuration/>标签的 status 属性用于设置 Log4j2 自身运行的日志显示级别,一般为OFF,不显示。当然,也可以设置为 ERROR、DEBUG 等其它级别。

 

<Console/>标签的 target 属性用于设置输出的目标形式,其值一般为:

SYSTEM_OUT 或 SYSTEM_ERR

<Console name="myConsole" target="SYSTEM_OUT"></Console>

 

<File/>标签的 fileName 属性用于设置文件的文件保存路径及文件名。如本例的意思是,日志文件名为 test.log,将其存放在当前项目的根目录下的 log 子目录中。

append 属性用于设置是否以追加方式将日志写入指定文件

<File name="myFile" fileName="log/test.log" append="true"></file>

 

<RollingFile/>标签的<SizeBasedTriggeringPolicy/>子标签用于指定每一个日志文件最大文件大小。当达到这个指定值后,会自动再新建一个日志文件

fileName 指定存放目录及第一个日志文件名。filePattern 指定新创建的日志文件的文件名。本例还会对文件进行压缩。

<RollingFile name="myRollingFIle" fileName="logs/app.log" filePatern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">

<SizeBasedTriggeringPolicy size="1KB"/>

</RollingFile>

 

 

<loggers/> 标签

用于配置根 Logger 对象,以指定所使用的日志记录器,及显示的级别。

其子标签<root/>用于指定所使用的日志记录器。该子标签的属性 level 用于指定显示级别。而日志记录器是通过<root/>的子标签<appender-ref/>来引用<appenders/>中定义好的记录器的。

需要注意的是,只要在<appenders/>中定义了<File/>、<RollingFile/>等,且在其中指定了日志存放的目录,那么这些目录就会自动创建。无论在<loggers/>的<root/>中是否声明使用它们。

 

<loggers>
<root level="info">
<appender-ref ref="myConsole"/>
<appender-ref ref="myLogFile"/>
<appender-ref ref="myRollingFile"/>
</root>
</loggers>

 

8.slf4j, Simple Logging Facade for Java,简单日志门面。其不是具体的日志解决方案,不做具体的日志服务。它仅仅是一种规范,一个接口。而 Log4j 则是slf4j 的一种具体实现,提供具体的日志服务。

slf4j 有自己单独的一套 API,这套 API 与具体的日志实现技术的 API 是不同的。为了能使 slf4j 的 API 与具体日志实现技术 API 结合到一起,在 slf4j 与具体日志技术之间,还需要一个连接的 jar。这个 jar 在 sfl4j 框架中存放着。slf4j-log4j12-1.7.12.jar