目录

1. 如果你用的是spring boot2.x 怎么升级方便

2. Caused by: java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor

3. Log4j2 error- ERROR StatusLogger Unrecognized format specifier

版本

Library Current Upgraded
Lo4j2 related jar * 2.17.1

1. 如果你用的是spring boot2.x 怎么升级方便

在pom.xml里加log4j2.version属性, 覆盖掉spring-boot-starter-parent的指定版本。

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository --></parent><properties> <log4j2.version>2.17.1</log4j2.version>
</properties>

原因是: 

spring-boot-dependendencies.pom里定义了 log4j2.version属性,利用它的值加的log4j2相关的包。

.... <groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.2</version><packaging>pom</packaging>
...<properties>
...<log4j2.version>2.17.0</log4j2.version><logback.version>1.2.9</logback.version><lombok.version>1.18.22</lombok.version><slf4j.version>1.7.32</slf4j.version>
...</properties><dependencies><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-bom</artifactId><version>${log4j2.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>

在 log4j-bom.pom 里其实它把所有的log4j相关包都加了。所以在我们的项目你直接用就可以了。

  <groupId>org.apache.logging.log4j</groupId><artifactId>log4j-bom</artifactId>
....<dependencyManagement><dependencies><!-- Log4j API --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${project.version}</version></dependency><!-- Core Log4j --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${project.version}</version></dependency>.....<!-- Legacy Log4j 1.2 API --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-1.2-api</artifactId><version>${project.version}</version></dependency><!-- Commons Logging Compatibility API --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-jcl</artifactId><version>${project.version}</version></dependency><!-- SLF4J Compatibility API --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${project.version}</version></dependency><!-- SLF4J 1.8.x Compatibility API --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j18-impl</artifactId><version>${project.version}</version></dependency><!-- SLF4J Adapter --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-to-slf4j</artifactId><version>${project.version}</version></dependency><!-- Web Application Support --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>${project.version}</version></dependency><!-- java.util.logging adapter --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-jul</artifactId><version>${project.version}</version></dependency>....</dependencies></dependencyManagement>

如果你不是很了解 <scope>import</scope>的含义,可以看看下面的介绍,讲的很清楚

Maven – Introduction to the Dependency Mechanism

2. Caused by: java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor

异常信息:

Caused by: java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V

原因:

项目使用了log4j2,由于使用了全局异步打印日志的方式,还需要引入disruptor的依赖

<dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.2.0</version>
</dependency>

log4j2.xml

 <Loggers><AsyncRoot level="INFO" includeLocation="true"><AppenderRef ref="stdout" /><AppenderRef ref="file" /></AsyncRoot></Loggers>

解决方法:

升级Disruptor 到3.4.0 版本

<dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.4.0</version>
</dependency>

3. Log4j2 error- ERROR StatusLogger Unrecognized format specifier

错误信息:

ERROR StatusLogger Unrecognized format specifier [d]
ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [thread]
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [level]
ERROR StatusLogger Unrecognized conversion specifier [level] starting at position 35 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [logger]
ERROR StatusLogger Unrecognized conversion specifier [logger] starting at position 47 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [msg]
ERROR StatusLogger Unrecognized conversion specifier [msg] starting at position 54 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [n]
ERROR StatusLogger Unrecognized conversion specifier [n] starting at position 56 in conversion pattern.
ERROR StatusLogger Reconfiguration failed: No configuration found for '135fbaa4' at 'null' in 'null'

相关代码- pom.xml

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId>             <executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><finalName>your-component-name</finalName></configuration></execution></executions></plugin>

解决方法:

打包的时候去掉Log4j2Plugins.dat 文件。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId>             <executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><finalName>your-component-name</finalName><filters><filter><artifact>*:*</artifact><excludes><exclude>**/Log4j2Plugins.dat</exclude> </excludes></filter></filters></configuration></execution></executions></plugin>

Log4j2 升级到2.17.1踩过的坑相关推荐

  1. Spring boot升级到2.3.2.Release和Spring framework升级到5.28.Release踩过的坑

    目录 1. 利用下面方法启动spring boot 项目是系统参数不生效 2. org.drools.template.parser.DecisionTableParseException: Fail ...

  2. Hibernate升级到5.4.18.final的过程踩过的坑

    目录 1. 抛javax.persistence.TransactionRequiredException异常,在没有事务时 2. 执行save/insert/delete相关的DB操作后,没有生效也 ...

  3. linux ubuntu 17,Ubuntu 17.04(Zesty Zapus)已经结束支持,请升级到Ubuntu 17.10

    截至今天,2018年1月13日,Ubuntu 17.04(Zesty Zapus)操作系统已经到达使用寿命,Canonical将不再为该系统版本提供任何安全和软件更新. Ubuntu 17.04(Ze ...

  4. Spring Cloud 升级最新 Finchley 版本,踩了所有的坑

    转载自   Spring Cloud 升级最新 Finchley 版本,踩了所有的坑 Spring Boot 2.x 已经发布了很久,现在 Spring Cloud 也发布了 基于 Spring Bo ...

  5. centos升级glibc(升级到 2.17版)

    1.原先的系统glibc库的版本是2.12,需要升级到2.17版本. 下载地址: http://ftp.gnu.org/gnu/glibc/ http://ftp.gnu.org/gnu/glibc/ ...

  6. 【JDK】win 10 / win 11:jdk 8 升级为 jdk 17

    目录 一.前言 二.历史版本 Java 安装 三.最新版本 Java 安装 (1)历史版本作废 (2)最新版本沿用旧版 JDK 系统环境变量 (3)JDK 17 下载 (4)JDK 17 安装 (5) ...

  7. Redis 集群部署及踩过的坑

    本文目标 要在单台机器上搭建Redis集群,方式是通过不同的TCP端口启动多个实例,然后组成集群,同时记录在搭建过程中踩过的坑. 安装准备 centos版本:6.7 redis版本:3.2.3 安装方 ...

  8. arcgis python 二次开发_我在部署ArcGIS API for Python时踩到的坑

    ArcGIS API for Python相比于其他ESRI产品,还是很年轻.我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性. 今天回顾一下,做个总结吧.一方面自己备忘,另 ...

  9. vSAN一次人肉工程师踩过的坑

    vSAN一次人肉工程师踩过的坑 原创 李严省 虚实之路 2017-04-16 大家星期天好,这几天阳光不错,是个带家人或者女朋友出去转转的好时候.可惜这二天一夜做了VMwarevSAN人肉工程师,这二 ...

最新文章

  1. 撤销操作 —— Git 学习笔记 12
  2. No plugin found for prefix ‘scala‘ pom.xml
  3. 【20181026T2】**图【最小瓶颈路+非旋Treap+启发式合并】
  4. 第一次使用mysql_第一次使用mysql,求帮忙
  5. 外卖平台用户端APP说明
  6. coreboot学习3:启动流程跟踪之bootblock阶段
  7. python删除某个文件夹_Python 实现删除某路径下文件及文件夹
  8. 蓝芯保护卡_有个网友问偶蓝芯卡是目前最好的还原卡?它与传统还原卡的区别在哪里?...
  9. 老李分享:HTTP session原理及应用 1
  10. Django Celerybeat日志报错处理('NoneType' object has no attribute 'is_due')
  11. Win7系统经常蓝屏故障处理过程及思路
  12. 模拟I2C怎么用--教你使用GPIO口模拟I2C总线协议
  13. 实时帧数手机_实时音频的混音在视频直播中的技术原理和实践总结
  14. pycharm前进、后退快捷键
  15. 防CC攻击 软件防火墙和WEB防火墙大比较
  16. PPPoE协议应用场景
  17. 软件技术部第一次机器学习培训
  18. Android studio 实现背景音乐(打开页面自动循环播放)
  19. Linux/Centos: 服务器TIME_WAIT和CLOSE_WAIT区别及解决方案
  20. ERP项目文档--想到用时方恨少

热门文章

  1. 关于数组方面的算法分析
  2. 内存管理(注意事项和重点)
  3. 福昕高级PDF编辑器
  4. CentOS 7 odoo12 部署
  5. 国外开源的PACS服务器
  6. Windows下的包管理工具scoop
  7. 粗谈MySQL事务的特性和隔离级别
  8. C#设计模式之9-装饰者模式
  9. 通过接口字段名称反向猜测数据库列名
  10. ffmpeg转换格式