当前位置: 代码网 > it编程>编程语言>Java > SpringBoot将logback替换成log4j2的操作步骤

SpringBoot将logback替换成log4j2的操作步骤

2024年10月27日 Java 我要评论
一 为何要替换成log4j21.1 log4j2的优点log4j2使用了两种方式记录日志:asyncappender和asynclogger。1.asyncappender使用队列异步记录日志,但是一

一 为何要替换成log4j2

1.1 log4j2的优点

log4j2使用了两种方式记录日志:asyncappender和asynclogger。

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

注意的是:  使用asynclogger才会使用disruptor提高性能。如果使用的asyncappender,则使用的是类似logback一样的队列的方式做异步记录。

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进行使用配置是路径

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);

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包:

到此这篇关于springboot将logback替换成log4j2的操作步骤的文章就介绍到这了,更多相关springboot logback替换成log4j2内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com