首页 > 其他分享 >Spring Boot 配置 log4j2

Spring Boot 配置 log4j2

时间:2023-11-17 15:01:07浏览次数:36  
标签:... Spring boot springframework Boot org 日志 log4j2

Spring Boot 配置 log4j2_xml

本教程中,我们将学习如何在 Spring Boot 中整合使用 Log4j2 日志框架。

Log4j2 介绍

Spring Boot 中默认使用 Logback 作为日志框架,接下来我们将学习如何在 Spring Boot 中集成与配置 Log4j2。在配置之前,我们需要知道的是 Log4j2 是 Log4j 的升级版,它在 Log4j 的基础上做了诸多改进:

  • 1.异步日志;
  • 2.支持 Java8 lambda 风格的懒加载日志;
  • 3.过滤器;
  • 4.插件;
  • 5.并发性改进;
  • 6.支持: SLF4J, Commons Logging, Log4j-1.x 以及 java.util.logging;
  • 7.配置热加载;
  • 8.自定义日志级别;

看到上面这些新特性,我们肯定特别想在我们的 Spring Boot 应用中使用 Log4j2

添加 Maven 依赖

Spring Boot 默认使用的是 logback, 想要使用 Log4j2, 我们需要首先排除掉默认的日志框架,然后添加 log4j2 依赖,下面是 pom.xml 文件:

<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>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId> 
</dependency>

添加 Gradle 依赖(可选)

如果你是通过 Gradle 来构建项目的,看下面:

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-log4j2'
} 
configurations {
    all {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    }
}

添加 Log4j2 配置文件

Spring Boot 支持以下 4 种格式的配置文件:

  • 1.xml(默认的)
  • 2.json
  • 3.yaml
  • 4.properties 文件

Spring Boot 如果在 classpath:目录下找到了 log4j2.xml 或者 log4j2.json 或者 log4j2.properties或者log4j2.yaml的其中任意一个配置文件,就会自动加载并使用它。

接下来,我们来看看 log4j2.xml 格式,要如何配置?

在 /src/main/resource 目录下创建 log4j2.xml 配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="PID">????</Property>
        <Property name="LOG_PATTERN">%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx</Property>
    </Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

通过 Properties 文件来创建配置文件(可选)

如果你不喜欢通过 xml 的方式,你还可以选择在 /src/main/resources 目录下创建 log4j2.properties:

status = error
name = Log4j2Sample
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} - %msg%n
rootLogger.level = warn
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

Log4j2 实战

一切准备就绪后,我们在 Application 启动类中,创建一个测试的接口,在接口中打印日志:

package site.exception.springbootlog4j2;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SpringBootLog4j2Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootLog4j2Application.class, args);
    }
    private static final Logger LOG = LogManager.getLogger(SpringBootLog4j2Application.class);
    @GetMapping("/test")
    public String test() {
        LOG.debug("debug 级别日志 ...");
        LOG.info("info 级别日志 ...");
        LOG.warn("warn 级别日志 ...");
        LOG.error("error 级别日志 ...");
        LOG.fatal("fatal 级别日志 ...");
        return "Hello Log4j2 !";
    }
}

启动项目,看看控制台输出:

2023-10-06 22:15:59.815 INFO 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : info 级别日志 ...
2023-10-06 22:15:59.815 WARN 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : warn 级别日志 ...
2023-10-06 22:15:59.815 ERROR 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : error 级别日志 ...
2023-10-06 22:15:59.815 FATAL 11936 --- [nio-8080-exec-1] s.e.s.SpringBootLog4j2Application : fatal 级别日志 ...

最后

欢迎大家关注我【小白技术圈】,回复 B01或b01,双手奉上Java相关书籍和面试题!



作者:深码青年


标签:...,Spring,boot,springframework,Boot,org,日志,log4j2
From: https://blog.51cto.com/u_16282813/8447815

相关文章

  • Spring Boot 跨域访问
    出于安全的考虑,浏览器会禁止Ajax访问不同域的地址,在现如今微服务横行的年代,跨域访问是非常常见的。W3C的CORS(Cross-origin-resource-sharing)规范中也已经允许跨域访问,并被主流浏览器所支持,它们包括:Chrome3+;Firefox3.5+;Opera12+;Safari4+;IE8+;如何在SpringBoot......
  • SpringBoot使用@Value获取不到值的问题
    背景在一次SpringBoot项目改造为Cloud的过程中,使用Nacos作为配置中心获取属性,改造后程序启动报错,查看日志,定位到代码:解决方案如果了解Bean的生命周期的同学应该知道,Spring在创建Bean的时候,会使用无参构造函数去初始化一个Bean,@Value这个阶段是属于依赖注入,是在初始化之后的,所......
  • 02_自定义Springboot starter
     创建springbootstarter 创建一个demostarter  创建配置类@Configuration@EnableConfigurationProperties(EmailProperties.class)@ConditionalOnBean(EmailEnable.class)publicclassEmailAutoConfiguration{static{System.out.println("Em......
  • Spring中@Autowired和@Resource的区别
    说明注解提供方:@Autowired这个由Spring提供;@Resource由JDK提供区别①注解内参数不同@Autowired只包含一个required参数,默认为true,表示注入的时候,该bean必须存在,否则就会注入失败;required=false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错@Resource包含七个参数,其中最......
  • spring boot
           ......
  • Spring5学习随笔-生命周期、自定义类型转换器、后置处理Bean
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】第十章、对象的生命周期1.什么是对象的生命周期指的是一个对象创建、存活、消亡的一个完整过程2.为什么要学习对象的生命周期由Spring负责对象的......
  • 「Java开发指南」如何在Spring中使用JAX-WS注释器?
    本文将指导您如何使用JAX-WS注释器从Spring服务生成JAX-WSWeb服务,在本教程中,您将学习如何:为Spring服务启用JAX-WS部署应用程序并测试服务所有与Springscaffolding相关的任务都需要MyEclipseSpring或Bling授权。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:7423369......
  • org.springframework.boot.loader.jar.jarfile memory leak
       org.springframework.boot.loader.jar.jarfilememoryleak这个问题可能是因为SpringBoot应用在运行时会将jar包解压到临时文件夹中,然后从这些解压的文件中加载类。如果您在应用运行时反复加载不同的jar包,就可能导致内存泄漏的问题。解决这个问题的方法是在应用......
  • springboot整合前端实现断点续传、大文件秒传以及多线程上传下载
    前端,百度开源框架webuploader新建upload.htmlwebuploader官网地址:http://fex.baidu.com/webuploader/<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>webuploader</title></head><!--引......
  • springboot 集成dubbo 关键配置:
    1.pom<!--dubbo与zk的组件start--><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.1.0</version></dependency><dependency>......