spring 日志记录忽略作为 jvm 参数传递的 log4j2 配置文件

标签 spring spring-boot log4j2

我试图将 log4j2 xml 配置作为 jvm 参数传递给 spring boot 插件,但由于某种原因 spring 忽略它并使用其默认的 log4j2 配置文件。我可以确认环境变量在运行时存在。以下是我的设置。 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.falcon</groupId>
    <artifactId>spring-boot-sample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-sample</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                <jvmArguments>-Dlog4j.configurationFile="/Users/anedumar/Work/STS/spring-boot-sample/src/test/resources/log4j2-test.xml"</jvmArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我的 log4j2-test.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="-------->%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="debug">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

当我调试应用程序时,我看到 spring 使用自己的 xml 打包,如下所示。 enter image description here 如何将配置位置作为环境变量传递并使其正常工作?

最佳答案

在 Spring Boot 中,外部日志文件位置的属性是logging.config,如手册中所述:

The various logging systems can be activated by including the appropriate libraries on the classpath, and further customized by providing a suitable configuration file in the root of the classpath, or in a location specified by the Spring Environment property logging.config.

关于spring 日志记录忽略作为 jvm 参数传递的 log4j2 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094361/

相关文章:

Spring Data MongoDB + Spring Boot 启动两次?

java - 如何使用注释创建一个包含原型(prototype) bean 实例的列表?

java - Springboot - AWS Elasticbeanstalk - 资源无法解析

java - 在 Spring Context @Configuration 中运行一个无效的设置方法

java - 需要说明一下Spring的好处

java - Jackson 在我的 Spring Boot 应用程序中忽略了 spring.jackson.properties

spring - 无法让 Oauth2 在最新版本的 Spring boot 中工作

java - 错误 StatusLogger Log4j2 找不到日志记录实现

java - 如何在 Apache Camel >= 3 中配置路由跟踪?

java - Apache 的 ContextMap 是否需要显式清理?