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 ...
随机推荐
- 简单使用JSON,JavaScript中创建 JSON 对象(一)
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...
- 不高级不能发帖的WPS论坛
今天又发现了一个难用到令人发指的社区:WPS论坛.它的产品经理一定没用过这个论坛或者它根本没有产品经理. 发帖提示悬赏分不能为0,但整个界面就没有悬赏分有关的东西,于是尝试点击下面的快速回复,结果导致 ...
- Arduino 串口篇 Arduino发送十六进制 send HEX via serial port RS232-to-USB to PC
发送十六进制比较直观,可以在上位机中直接获取十六进制的数据,然后在在上位机上将十六进制HEX转换成BIN(二进制)或者DEC(十进制)就十分简单有效了. 下面是在Arduino上怎么演示直接发送16进 ...
- hibernate4 spring3.2 事务不提交分析
最近在做微信项目,我搭建了一个基于servlet,spring3.2,hibernate4.1的框架.因为基于消息的servlet和基于业务层是分开做的,也就是先把业务层做了,再去将所有的请求转到业务 ...
- asp.net MVC 路由系统
ASP.NET的路由系统是基于物理文件的路由注册,通过调用System.Routing.RouteTable的Routes(RouteCollection)属性的MapPageRoute()方法来完成 ...
- magento 小问题解决方案集
magento错误 Mage registry key "_singleton/core/resource" already exists解决方法:1.清理magento的var/ ...
- java模式之装饰模式
1. 什么叫装饰模式? 根据业务的需求,需要对一个类的方法进行增强的处理. 2. 为什么需要装饰模式? 拓展性更加的好,当觉得这个装饰不好的时候,可以直接拿下,不需要改变任何的代码. 3. 装饰模式的 ...
- C语言实现修改文本文件中的特定行
最近由于项目需要实现修改文件的功能,所以,博主认真查阅了一些资料,但是,很遗憾,并没有太多的收获. 好的,首先我先叙述下功能要求: 其实很简单,就是Shell中sed命令的C语言实现,实现定 ...
- .NET基础——基本概念
1. .NET.C#(sharp)和JAVA .net是一种多语言的平台,开发.net可以用多达几十种语言进行开发. C#(sharp)是一种编程语言,可开发基于.net平台的应用. Java既是 ...
- java基础(一)对象
对象的创建 Test test = new Test(); Test test = new Test("a"); 其实,对象被创建出来时,对象就是一个对象的引用,这个引用在内存中为 ...