Log4J1升级Log4J2
近期,碰到需要将项目中的Log4J1升级到Log4J2,现进行下总结。交代下技术背景:web项目,基于Java + Maven
1. 依赖
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.3</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.2</version> </dependency> <!-- slf4j到log4j2的桥梁 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.3</version> </dependency> <!-- listener:Log4jServletContextListener依赖 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>2.3</version> <scope>runtime</scope> </dependency>
PS:slf4j-log4j12与log4j-slf4j-impl冲突,注意exclusion间接引入的slf4j-log4j12
2. 日志配置
配置log4j2.xml,放于classpath:log/log4j2.xml,或其他位置,则要注意修改下面web.xml中的响应配置
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="off"> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="[%d] %-5p [%c %L] %m%n"/> </Console> <RollingFile name="AppAppender" fileName="/data/applogs/{项目名称}/logs/app.log" filePattern="/data/applogs/{项目名称}/logs/app.log.%d{yyyy-MM-dd}"> <PatternLayout> <Pattern>[%d] %-5p [%c %L] %m%n</Pattern> </PatternLayout> <Policies> <!-- 每天切割日志 --> <TimeBasedTriggeringPolicy interval="24" modulate="true"/> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="STDOUT"/> <AppenderRef ref="AppAppender"/> </Root> </Loggers> </Configuration>
PS:
{项目名称} 需替换成自己的项目;
/data/applogs/{项目名称}/logs/app.log 设置日志文件的绝对路径
/data/applogs/{项目名称}/logs/app.log.%d{yyyy-MM-dd} 设置切割后日志的绝对路径
3. 读取配置
web.xml中增加读取log4j2.xml的配置:
<!--由Spring载入的Log4j配置文件位置 --> <context-param> <param-name>log4jConfiguration</param-name> <!-- log4j2.xml文件位置,注意与2中的相对应 --> <param-value>classpath:log/log4j2.xml</param-value> </context-param> <!-- the very first listene --> <listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener>
4 参考资料
slf4j与jul、log4j1、log4j2、logback的集成原理
Log4J1升级Log4J2的更多相关文章
- 3.Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结
一.slf4j.jcl.jul.log4j1.log4j2.logback JUL:JDK中的日志记录工具,也常称为JDKLog.jdk-logging. LOG4J1:一个具体的日志实现框架. LO ...
- slf4j、jcl、jul、log4j1、log4j2、logback大总结
1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j ...
- Java日志框架使用技巧收集(slf4j、jcl、jul、log4j1、log4j2、logback)
乒乓狂魔-教程: jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf ...
- slf4j、jcl、jul、log4j1、log4j2、logback大总结[转]
#1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4 ...
- Spring Boot发布2.6.2、2.5.8:升级log4j2到2.17.0
12月22日,Spring官方发布了Spring Boot 2.5.8(包括46个错误修复.文档改进和依赖项升级)和2.6.2(包括55个错误修复.文档改进和依赖项升级). 这两个版本均为缺陷修复版本 ...
- Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句
1.log4j1配置 目录结构: conf.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- Log4j2升级jar包冲突问题
升级Log4j2后日志提示jar包冲突: SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar ...
- Log4j2配置文件详解
目录[-] 1 系列目录 2 默认配置 3 第一个配置例子 4 复杂一点的配置 4.1 Appender之Syslog配置 4.2 Syslog及Syslog-ng相关配置(Fedora) 5 Log ...
- Java logger组件:slf4j, jcl, jul, log4j, logback, log4j2
先说结论 建议优先使用logback 或 log4j2.log4j2 不建议和 slf4j 配合使用,因为格式转换会浪费性能. 名词:jcl 和 jul 标题中的 jcl 是 apache Jakar ...
随机推荐
- LLVM小结
随笔- 5 文章- 0 评论- 10 LLVM小结 如果说gcc是FSF的传奇,llvm就是Chris Lattner的小清新.当然啦,想具体看看这位四处游山玩水还GPA 4.0的大神和他的 ...
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- 解决URL中文乱码问题--对中文进行加密、解密处理
解决URL中文乱码问题--对中文进行加密.解密处理 情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标 ...
- 彩蛋 Python之道
彩蛋 Python之道 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 使用下面的语句可以调出Python中的一个彩蛋, impo ...
- #2006 - MySQL server has gone away 问题解决方法 (全) (转)
#2006 - MySQL server has gone away 问题解决方法 原文地址:http://www.cnblogs.com/bisonjob/archive/2009/08/18/15 ...
- Android中ListView下拉刷新的实现
ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: packa ...
- 学习Machine Leaning In Action(四):逻辑回归
第一眼看到逻辑回归(Logistic Regression)这个词时,脑海中没有任何概念,读了几页后,发现这非常类似于神经网络中单个神经元的分类方法. 书中逻辑回归的思想是用一个超平面将数据集分为两部 ...
- 主引导记录MBR/硬盘分区表DPT/主分区、扩展分区和逻辑分区/电脑启动过程
主引导扇区主引导扇区位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},bios在执行自己固有的程序以后就会jump到MBR中的第一 条指令.将系统的控制权交由mbr来执行.主引 ...
- angularjs控制器之间通信,事件通知服务
service要记住一点就是所有的services都是singleton(单例)的,service更多的是做一些业务逻辑,数据交互.当然,利用单例这特点也可以用来做不同控制器间的通信.控制器间的通信也 ...
- c数据结构学习随笔
#include <stdio.h> #include <stdlib.h> #include "PublicDS.h" #include<Windo ...