学习笔记,为了加强记忆和深入理解在此记录备忘。如有错误和理解不当之处,还望指正。万分感谢!
另外,实例和内容有些是参照网络其他博文,如有侵权可联系删掉。
参考地址:https://mp.csdn.net/postedit
目录
之前总结了Log4j的入门使用,今天看看Log4j2的入门使用。Log4j2和Log4j是一个作者,只不过log4j2是重新架构的一款日志组件,他抛弃了之前log4j的不足,以及吸取了优秀的logback的设计重新推出的一款新组件。
一、必须的包
- log4j-api-2.11.1.jar
- log4j-core-2.11.1.jar
二、日志级别
这个和Log4j差不多
- trace:追踪,就是程序推进一下,可以写个trace输出
- debug:调试,一般作为最低级别,trace基本不用
- info:输出重要的信息,使用较多
- warn:警告,有些信息不是错误信息,但也要给程序员一些提示
- error:错误信息。用的也很多
- fatal:致命错误
三、配置文件
3.1 输出和格式
其中日志输出目的地和输出格式和Log4j基本一样,不再列出。参考之前的Log4j 总结
3.2 配置说明
log4j 2则已经弃用了properties这种方式,采用的是.xml,.json或者.jsn这种方式
系统选择configuration文件的优先级如下(放在src文件夹):
- classpath下名为 log4j-test.json 或者log4j-test.jsn文件
- classpath下名为 log4j2-test.xml
- classpath下名为 log4j.json 或者log4j.jsn文件
- classpath下名为 log4j2.xml
很多人认为src就是classpath,java项目中Classpath路径到底指的是哪里?
- src不是classpath,WEB-INF/classes和lib才是classpath,WEB-INF/是资源目录, 客户端不能直接访问。
- WEB-INF/classes目录存放src目录java文件编译之后的文件,xml、properties等资源配置文件,这是定位资源的入口。
- lib和classes同属classpath,两者的访问优先级为: lib>classes。
配置文件说明,和Log4j的配置文件大同小异,注意个别差异就可以
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR">
<!-- 先定义所有的appender -->
<appenders>
<!-- 这个输出控制台的配置 -->
<Console name="logConsole" target="SYSTEM_OUT">
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
<!-- 这个都知道是输出日志的格式 -->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
</Console>
<!-- 这个是输出到文件的配置 -->
<File name="logFile" fileName="e://test.log" append="false">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
</File>
</appenders>
<!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
<loggers>
<!-- 建立一个默认的root的logger -->
<root level="trace">
<appender-ref ref="logConsole" />
<appender-ref ref="logFile" />
</root>
</loggers>
</configuration>
四、使用过程中和Log4j的差别
在使用的过程中和Log4j有一些区别
4.1 导入的包不一样
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
4.2 读取配置文件方法不一样
// Log4jTest是类名
static Logger logger = LogManager.getLogger(Log4jTest.class.getName());
其他使用方法基本一样