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 ...
随机推荐
- “MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第二篇(数据库结构、登录窗口、以及主界面)
“MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第二篇(数据库结构.登录窗口.以及主界面) 一.在上一篇文章中,主要说的就是把主框架搭建起来,并且Nhibernate能达到增 ...
- [Ext JS 4] contentEL,renderTo, applyTo 释义与区别
前言 若干年前,使用Ext JS 3 开发了一个系统. 随着Ext JS 4的出现,总是会看到或听到关于Ext 比较多的言论是 : Ext JS 4 较Ext JS 3 有较大的改变. Ext JS ...
- 单例模式及C++实现代码
单例模式及C++实现代码 单例模式 单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目.但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能 ...
- 用Vue中遇到的问题和处理方法(一)
用Vue开发项目有一段时间,在实际项目中遇到一些问题,在里把问题记录下来,并附上解决方案,给遇到同样的问题的码友提供一个解决思路吧: 测试部抛出问题一:在Vue1.0路由vue-router中,当点击 ...
- Spring MVC---基于注解的控制器
基于注解的控制器 SpringMVC是一个基于DispatcherServlet的MVC框架,每个请求最先访问的是Dispatcher ...
- 将前台input中的数据异步传到后台并存入数据库
将前台input中的数据异步传到后台并存入数据库 先看图: 利用ajax异步交互数据,并不是以json数组的形式将数据传到后台,而是利用字符数组的形式将其传到后台.动态新增每一行数据,将每一列对应的数 ...
- Sipdroid实现SIP(六): SIP中的请求超时和重传
目录 一. Sipdroid的请求超时和重传 二. SIP中超时和重传的定义 三. RFC中超时和重传的定义 一. Sipdroid的请求超时和重传 Sipdroid实现SIP协议栈系列, 之前的文章 ...
- ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小. 使用 ...
- 【LeetCode】31. Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- Linux 下安裝 Java SE Development Kit(JDK)並配置環境變量
下載頁面:http://www.oracle.com/technetwork/java/javase/archive-139210.html 打開“Java SE 7”,再打開“Java SE Dev ...