springboot将logback替换成log4j2

一 为何要替换成log4j2

1.1 log4j2的优点

log4j2使用了两种方式记录日志:AsyncAppender和AsyncLogger。

1.AsyncAppender使用队列异步记录日志,但是一旦队列已满,appender线程需要等待。
2.AsyncLogger是采用Disruptor,通过环形队列无阻塞队列作为缓冲,多生产者多线程的竞争是通过CAS实现,无锁化实现,可以降低极端大的日志量时候的延迟尖峰,Disruptor 可是号称一个线程里每秒处理600万订单的高性能队列。

注意的是:  使用AsyncLogger才会使用disruptor提高性能。如果使用的AsyncAppender,则使用的是类似logback一样的队列的方式做异步记录。
https://blog.csdn.net/m0_69057918/article/details/130972522

1.2 log4j2.xml如何读取application.yml中属性值

1.2.1 操作步骤

1.在application.properties 或者application.yml文件中配置

patcher.log=/data350/fengqxLogFile/patcher

2.编写监听器

@Component
public class LoggerListener implements ApplicationListener<ApplicationEvent>, Ordered {
    @Override
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
 
        if (applicationEvent instanceof ApplicationEnvironmentPreparedEvent) {
            ConfigurableEnvironment environment = ((ApplicationEnvironmentPreparedEvent) applicationEvent).getEnvironment();
            String filePath = environment.getProperty("patcher.log");
            if (StringUtils.isNotEmpty(filePath)) {
                System.err.println("=================" + filePath);
                System.setProperty("patcher.log", filePath);
            }
        }
    }
 
    @Override
    public int getOrder() {
        // 当前监听器的启动顺序需要在日志配置监听器的前面,所以此处减 1
        return LoggingApplicationListener.DEFAULT_ORDER - 1;
    }

3.在 /src/main/resources/META-INF/spring.factories进行加载监听器

org.springframework.context.ApplicationListener=com.longze.patcher.listener.MyLoggerListener

4.log4j2.xml进行使用配置是路径

springboot log4j2日志 配置路径_springboot指定log4j配置文件位置-CSDN博客

1.3 log4j&slf4j&log4j2需要的导入的包

Log4j实例:

import org.apache.log4j.Logger;

private static final Logger LOGGER = Logger.getLogger(X.class);

Slf4j实例: 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger logger = LoggerFactory.getLogger(X.class);

Log4j2的使用: 

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

private static final Logger logger = LogManager.getLogger(X.class);

升级log4j 2.x版本 缓存异步化配置解读 - 欲上九天揽月 - ITeye博客

1.4 整合log4j2需要引入的依赖与排除依赖

1.引入依赖

<dependencies>
  <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
  <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.17.1</version>
      <scope>test</scope>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
  <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.17.1</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
  <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.17.1</version>
  </dependency>
  <dependency>
      <groupId>com.Imax</groupId>
      <artifactId>disruptor</artifactId>
      <version>2.17.1</version>
  </dependency>
</dependencies>

排除jar包:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值