SpringBoot-集成Log4j2

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-08

​ 工作过程中一般我们都是接手的项目,可能只注意到怎么使用log4j,没有亲手设置过项目的log4j。本人也是,出于学习的目地,自己亲手试着在SpringBoot的项目中集成了一下log4j2。之于为什么要集成log4j2,本人网上也查了下,主要是:性能提升、自动重载配置

​ SpringBoot默认集成的日志系统是LogBack,logBack是随着spring-boot-starter-logging引进来的,如图:

当然SpringBoot也是支持Log4j2,只需要去掉logback的依赖,引入Log4j2即可。

如果你需要用到Log4j2的AsyncLogger的异步日志实现方式,还需要引入Disruptor

异常说明 如果你的LogBack没有排干净(即被别的系统间接的引入了LogBack的jar),系统会报错,报错信息是很奇怪的

Logging system failed to initialize using configuration from 'classpath:-----.xml'

异常信息是:

​ log4j2一般采用的是xml形式的配置,你需要在在resources目录下新建一个log4j2的配置文件,暂时名称为log4j2.xml。另外还需要在application.properties文件中显示声明才行

​ 当然如果不配置logging.config,SpringBoot默认加载的文件名是:log4j2.xml、log4j2-file.xml这两个,在源码:org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadDefaults中:

​ 到此SpringBoot集成Log4j2的工作已经完成,可能很多同学跟我一样,也想了解一下log4j2的配置,下面来介绍一下log4j2的日志配置。

常用的:root为同步日志输出,AsyncLogger为异步日志。异步日志输出注意三点:



  • SpringBoot接入轻量级分布式日志框架(GrayLog)
    答:这块在官网也有给出对应的解释: The Graylog Extended Log Format (GELF) is a log format that avoids the shortcomings of classic plain syslog 详细资料: https://docs.graylog.org/docs/gelf GELF 是一种日志格式,能避免传统意义上的 syslogs 的一些问题,而我们引入的Maven...
  • springboot在docker中无法输出日志到Logstash
    答:在搭建了基于docker的 ELK 日志系统后,使用springboot(其实和什么开发的无关)开发web app,作为container运行在docker容器里,写入Logstash失败,但是本机运行调试的日志都可以写入。因为docker的日志似乎必须使用 docker logs 指令来查看,记录到container目录下,也不知道为什么就是写入不了Logstash。===...
  • Springboot集成Kafka
    答:4. 安装Kafka Manage (非必要:安装主要是了对kafka项目操作提供图形化界面操作),具体版本可以根据项目实际情况选择,本项目使用的是1.3.3.7 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!-- ...
  • Spring Boot 开发工具的使用
    答:如果要记录所有请求详细信息(包括可能的敏感信息),可以启用 spring.http.log-request-details 。 如果不想使用默认的配置,可以设置 spring.devtools.add-properties 为 false 。当 classpath 上的文件发生修改时,使用了 spring-boot-devtools 的应用会自动重启。在开发过程中,会是一个有...
  • 结合springboot搭建日志采集系统EFK
    答:logs/${logName}/${logName}.log truelogs/${logName}/${logName}-%d{yyyy-MM-dd}.log.%i 64MB 30 1GB Asia/Shanghai {"level": "%level","class": "%logger{40}","message": "%message","stack_trace": "%exception"} 启动springboot服务,生成的日志会自动被filebeat采集并推送到es。 已...
  • 在IDEA中SpringBoot整合Junit4,运行一个@Test注解的方法结果这个方法运 ...
    答:extends TestCase 后面这个基类是哪里来的
  • 启动spring boot报错,怎么解决
    答:【解决办法】需要在启动类的@EnableAutoConfiguration或@SpringBootApplication中添加exclude = {DataSourceAutoConfiguration.class},排除此类的autoconfig。启动以后就可以正常运行。【原因】这个原因是maven依赖包冲突,有重复的依赖。【Spring Boot】Spring Boot是由Pivotal团队提供的全新框架,其设计目的是...
  • springbootweb项目中修改服务器端口的配置属性是
    答:);druidDataSource.setUrl(this.dbUrl);druidDataSource.setUsername(username);druidDataSource.setPassword(password);druidDataSource.setDriverClassName(driverClassName);log.info("cccccccccccccccc");log.info(this.name);return druidDataSource;} } Spring Boot 属性配置&自定义属性配置 ...
  • idea 有没有spring boot插件
    答:4.阿里巴巴代码规约检测 检测JAVA代码中存在不规范得位置然后给予提示,阿里巴巴规约插件包含三个子菜单:编码...通过org.springframework.boot.logging.LoggingSystem提供的api即可。 loggingSystem.setLogLevel(null, Log
  • SpringBoot进阶之缓存中间件Redis
    答:接下来的几期内容将会带大家进阶使用,会先讲解基础 中间件 的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有 收获 ,本期将会给大家讲解最热门的缓存中间件技术 Redis ,同样的,我们集成到 Springboot 中。最近github可能会...