1 log4j2 简介
log4j2是一款优秀的日志记录工具.常用的组件有两个,log4j-core,和log4j-api;
对比log4j-core的使用人数,发现2.11.1这个版本是目前使用人数最多的,所以,这次我们使用2.11.1这个版本.
2 开发环境明细
我的机器上的开发环境配置如下:
jre:1.8.0_212
tomcat:8.5.42
jsp版本: 2.3
servlet版本:3.1
如何查看自己的开发环境版本:
1,查看jre的版本:
命令行中输入:
$ java -version
2,查看tomcat的版本:
直接查看tomcat下载下来后的文件名字就可以了;
3,查看servlet版本:
假如tomcat的目录为CATALINA_HOME,那么在CATALINA_HOME/lib/servlet-api.jar这个文件,解压缩,用记事本打开META-INF文件夹中的MANIFEST.MF文件,Specification-Version的值,就是servlet的版本:
4,查看jsp版本:
在CATALINA_HOME/lib/jsp-api.jar这个文件,解压缩,用记事本打开META-INF文件夹中的MANIFEST.MF文件,SpecificationVersion的值,就是servlet的版本;
3 使用pom引入log4j2
pom.xml中增加如下内容:
<properties>
<log4j.version>2.11.1</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
4 使用默认配置输出日志
在src/test/java中新建Log4j2Test类,简单输入以下代码
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4j2Test {
public static void main(String[] args) {
Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
logger.trace("trace level");
logger.debug("debug level");
logger.info("info level");
logger.warn("warn level");
logger.error("error level");
logger.fatal("fatal level");
}
}
运行结果如下:
1,log4j的日志等级有6个,代表信息的不同严重程度,严重程度从小到大排列为:
trace<debug<info<warn<error<fatal
2,如果不配置log4j,系统会提示没有找到配置文件,然后按照默认设置输出信息;
3,默认情况下,系统输出error和fatal级别的信息到控制台;
5 简单配置log4j
新建src/main/resources/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
再次运行结果为:
这次输出了info和warn级别的信息;
5.1 关于log4j2配置文件的位置
log4j2默认会在classpath目录下寻找log4j2.xml、log4j2.json、log4j2.jsn等名称的文件,如果找到了,就按照该文件进行配置. 而src/main/resources下的文件,部署时,是直接放在classpath目录下的;
什么是classpath? 就是指 CATALINA_HOME/webapps/[WebApp]/WEB-INF/classes这个目录;
如果把配置文件放在其他的目录,则需要额外的配置来告诉系统使用该文件进行配置.
5.1.1 Java代码指定:
public static void main(String[] args) throws IOException {
File file = new File("S:\\A01_Install\\A02_Programming\\A03_Java\\A04_Tomcat\\apache-tomcat-8.5.42\\webapps\\TinyTest\\WEB-INF\\configure\\Log4j2.xml");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
final ConfigurationSource source = new ConfigurationSource(in);
Configurator.initialize(null, source);
Logger logger = LogManager.getLogger("myLogger");
...
...
}
5.1.2 web.xml配置
web.xml配置的方式,我目前还没成功过,以后再来补上.
Reference
1,log4j2 实际使用详解
2,Maven仓库中的log4j
3,Log4j2在WEB项目中配置
4,Apache Log4j 2
5,详解log4j2(上) - 从基础到实战