log4j升级为log4j2(无需改动代码)

log4j升级为log4j2(无需改动代码)

1 .删掉项目中存在的Log4j1.x的jar包,添加log4j2的jar包;
2.添加log4j和log4j2的连接包log4j-1.2-api-2.x.x.jar,注意不是log4j-api-2.x.x.jar;
3.添加log4j2的配置文件log4j2.xml即可,log4j升级log4j2升级成功.

如果原项目中用的是slf4j打印日志,那么导包的时候需要导入:

slf4j-api-1.x.x.jar
slf4j-log4j12-1.x.x.jar

maven依赖示例

 <dependencies>

        <!--旧的log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--log4j2 的2个包¬-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.18.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.18.0</version>
        </dependency>

        <!--slf4j-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.30</version>
        </dependency>
        <!--连接log4j 和log4j2 的包-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-1.2-api</artifactId>
            <version>2.17.1</version>
        </dependency>

    </dependencies>

log4j2.xml的示例

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="error"> 
<!--  先定义所有的appender --> 
 <appenders> 
<!--   这个输出控制台的配置 --> 
  <Console name="Console" target="SYSTEM_OUT"> 
<!--    控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> 
   <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> 
<!--    这个都知道是输出日志的格式 --> 
   <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> 
  </Console> 
 
<!--   文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 --> 
<!--   append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true --> 
  <File name="log" fileName="log/test.log" append="false"> 
   <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> 
  </File> 
 
<!--   添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别 onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝 --> 
  <File name="ERROR" fileName="logs/error.log"> 
   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> 
   <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> 
  </File> 
 
<!--   这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --> 
  <RollingFile name="RollingFile" fileName="logs/web.log"
      filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz"> 
   <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> 
   <SizeBasedTriggeringPolicy size="2MB"/> 
  </RollingFile> 
 </appenders> 
 
<!--  然后定义logger,只有定义了logger并引入的appender,appender才会生效 --> 
 <loggers> 
<!--   建立一个默认的root的logger --> 
  <root level="trace"> 
   <appender-ref ref="RollingFile"/> 
   <appender-ref ref="Console"/> 
   <appender-ref ref="ERROR" /> 
   <appender-ref ref="log"/> 
  </root> 
 
 </loggers> 
</configuration>

最近做项目升级的工作,其中之一是将log4j升级。但是目前最高版本的1.2.17仍然被认为有漏洞,需要升级。于是换成log4j2,查询到此方法 不必修改代码即可完成升级。666的。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 引入新的依赖 在pom.xml文件中引入Spring Boot 2.4.3版本的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.4.3</version> </dependency> ``` 2. Application.properties文件更改 在application.properties文件中,需要更改的地方如下: ```properties spring.main.allow-bean-definition-overriding=true ``` 这个属性是Spring Boot 2.4.3中新增的,用于允许Bean定义的覆盖。在Spring Boot 2.3.10中默认是false。 3. 日志配置更改 在Spring Boot 2.4.3中,日志框架从Logback改为了Log4j2。如果之前使用的是Logback,需要将其依赖移除,并添加Log4j2的依赖: ```xml <!--移除Logback依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!--添加Log4j2依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> <version>2.4.3</version> </dependency> ``` 同时,需要将application.properties文件中的日志配置改为Log4j2的日志配置。 4. 引入新的特性 Spring Boot 2.4.3中引入了一些新的特性,比如: - 优化了响应式编程的支持; - 支持Java 15; - 支持JDBC的异步执行; - 支持配置文件中的if条件判断等。 可以根据实际情况,选择使用这些新特性。 5. 单元测试更改 在Spring Boot 2.4.3中,JUnit 5成为了默认的测试框架,因此需要修改测试类的引入: ```java import org.junit.jupiter.api.Test; ``` 同时,需要将Gradle或Maven中的JUnit依赖改为JUnit 5的依赖。 6. 其他更改 在Spring Boot 2.4.3中,一些类和方法进行了更改,比如: - DataSourceProperties类中的url属性改为jdbc-url; - RestTemplateBuilder类中的build()方法改为buildRestTemplate()方法。 需要根据实际情况进行修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值