Spring mvc集成log4j2
前期环境
Spring mvc + Maven + Idea
一、下面开始配置log4j2,先简单演示其如何配置,再仔细了解log4j2用法。
1.1 配置pom.xml,引用log4j2相关包
<!--log4j2支持--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.2</version> </dependency>
如果不知道该引用哪些包,可以在log4j2官网查看其最新的Jar包 https://logging.apache.org/log4j/2.x/maven-artifacts.html
1.2 配置简单的log4j2.xml配置文件
在项目的classpath目录下新建log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 配置LoggerConfig,即Appenders的日志级别为WARN --> <Configuration status="WARN"> <!-- Appenders支持配置多个Appender,支持向不同的目标输送日志,本例为配置向控制台输出 --> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </Appenders> <!-- Loggers支持配置多个Logger,可引用不同的目标Appender,也可根据业务需求定制特定要求的Appender --> <Loggers> <Root level="info"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
1.3 在web.xml文件里引用log4j2.xml
<context-param> <param-name>log4jConfiguration</param-name> <param-value>classpath:log4j2.xml</param-value> </context-param>
如果项目中使用的是Servlet2.5以上版本,则不需要配置用于log4j2的监听,所以现在一般不需要在单独为log4j2配Listener
1.4 测试日志输出
从上图看出,成功输出日志,说明log4j2初步配置成功。
二、log4j2相关基础
2.1 分析上例
PatternLayout写法
<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
%d{yyyy/MM/dd HH:mm:ss.SSS} 输出时间格式 (对应上例 2019/04/11 20:35:10.650)
[%t] 输出当前线程名称 (对应上例 [http-nio-8080-exec-6] )
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 (对应上例 INFO)
%logger{36} 输出logger名称,因为Root Logger没有名称,所以没有输出,只输出了对应类 myProject.Controller.LoginController2
%msg 输出日志文本
%n 换行
其他常用的占位符有:
%F 输出所在的类文件名,如LoginController2.java
%L 输出行号
%M 输出所在方法名
%l 输出语句所在的行数, 包括类名、方法名、文件名、行数
2.2 log4j2日志级别
TRACE < DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG和TRACE则不会输出。
下面还是用上例的配置测试其日志级别
由于配置文件中LoggerConfig定义的级别为WARN,即<Configuration status="WARN">,所以正常只有WARN,ERROR和FATAL会打印,但验证结果多了个INFO,是因为在Logger中引用了控制台的Appender,并单独指定了级别为INFO,即<Root level="info">,说实话不是很懂,所以开始了解log4j2的标签。
2.3 log4j2常用标签
<Configuration> log4j2.xml的根标签 status 设置的是log4j2自身内部的信息输出级别,输出到控制台
<Appenders> 这个标签包含多个<Appender/>
子标签,用于指定日志输出的位置及格式。待续
下面来看一个复杂点的配置文件,将不同级别的日志输出到不同的日志文件中,该配置参考博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律