在web(ssm/maven)项目中使用slf4j和log4j2记录系统日志

本文详细介绍了如何在Java Web(SSM/Maven)项目中使用Log4j2记录系统日志,包括Log4j2与Log4j的区别,配置文件的搜索原理,Tomcat版本差异,log4j-web的重要性,以及配置pom.xml、web.xml和日志配置文件的步骤。此外,还强调了在Servlet 3.0及以上版本无需额外配置web.xml,并推荐了使用Slf4j和Lombok简化日志代码。
摘要由CSDN通过智能技术生成




本篇的重点在于LOG4J2,它与LOG4J 第一版区别很大。我将教程放在后面,将一些知识放在前面,所以想看教程的直接拉到后面即可。

理论知识

关于两版的区别

两版的不同,直接的表现是在Maven仓库中log4j 表示第一版,org.apache.logging.log4j 表示第二版。另外应当注意:

1.Log4J2.4及更高版本需要Java 7,版本2.0-alpha1至2.3需要Java 6
2.XML配置已被简化,与Log4j 1.x不兼容
3.版本2.4开始支持通过属性文件进行配置,但与Log4j 1.x不兼容
4.支持通过JSON或YAML进行配置,但这些格式需要额外的运行时依赖关系
5.虽然Log4j 2与Log4j不直接兼容1.x,但提供了桥接依赖可以减少代码的修改

寻找配置文件的原理

log4j2允许使用log4jConfiguration 上下文参数在web.xml中指定配置文件。Log4j2将通过以下方式搜索配置文件

1.如果提供了一个位置,它将搜索servlet上下文资源,即配置log4jConfiguration
2.如果没有定义位置,则按照如下所有定位显式配置:

1.检测 log4j.configurationFile 系统属性,如果属性存在,就从它指定的文件中加载配置
2.在类路径上寻找名为 log4j2-test.json 或者 log4j2-test.jsn 的文件,如果文件存在,就从该文件加载配置
3.在类路径上寻找名为 log4j2-test.xml 的文件,如果文件存在,就从该文件加载配置
4.在类路径上寻找名为 log4j2.json 或者 log4j2.jsn 的文件,如果文件存在,就从该文件加载配置
5.在类路径上寻找名为 log4j2.xml 的文件,如果文件存在,就从该文件加载配置
6.使用类路径和文件URL的正常搜索序列用于定位配置文件

Tomcat版本的差异

出于性能原因,容器经常忽略已知不包含TLD或ServletContainerInitializer的某些JAR,并且不扫描它们的Web片段和初始化器。重要的是,Tomcat 7 <7.0.43将忽略名为log4j * .jar的所有JAR文件,从而阻止此功能的工作。这在Tomcat 7.0.43,Tomcat 8和更高版本中已经修复。在Tomcat 7 <7.0.43中,您将需要更改catalina.properties,并从jarsToSkip 属性中删除”log4j * .jar”。如果他们跳过扫描Log4j JAR文件,您可能需要在其他容器上执行类似的操作。

关于log4j-web的重要性

Log4j2-web.jar文件是配置为在应用程序中的任何其他Web片段之前的Web片段。它包含容器自动发现和初始化的ServletContainerInitializer(Log4jServletContainerInitializer)。这将Log4jServletContextListenerLog4jServletFilter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值