2017-11-03 2 views
2

Ich versuche, eine Log4j2 XML-Konfiguration als JVM-Parameter an das Spring-Boot-Plugin übergeben, aber aus irgendeinem Grund Spring ignoriert es und verwendet seine Standard-Log4j2-Konfigurationsdatei. Ich konnte bestätigen, dass die Umgebungsvariable zur Laufzeit vorhanden ist. Unten ist mein Setup. pom.xml:Spring Logging ignoriert log4j2 Konfigurationsdatei übergeben als jvm Argument

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

und mein log4j2-test.xml ist:

<?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> 

Wenn ich die Anwendung debuggen, ich, dass der Frühling sehe verwendet eine eigene XML innerhalb wie unten verpackt. enter image description here Wie übergebe ich den Konfigurationsspeicherort als Umgebungsvariable und bekomme es zum Funktionieren?

+0

Können Sie Ihre JVM-Befehlszeilenparameter posten? – PaulNUK

+0

@PaulNUK Die JVM-Argumente werden in der angegebenen pom.xml angezeigt ... ' -Dlog4j.configurationFile ="/Benutzer/Anedumar/Work/STS/Spring-Boot-Beispiel/src/test/resources/log4j2- test.xml "' – glytching

Antwort

2

Im Frühjahr Boot der Eigenschaft für die externe Protokolldatei ist logging.config wie hier im Handbuch beschrieben:

Die verschiedenen Erfassungssysteme können durch die Einbeziehung der entsprechenden Bibliotheken auf dem Classpath aktiviert werden, und weiter angepasst von Bereitstellung einer geeigneten Konfigurationsdatei im Stammverzeichnis des Klassenpfads, oder an einem Speicherort, der von der Spring Environment-Eigenschaft logging.config angegeben wird.

+2

Danke. Das hat funktioniert. – falcon

Verwandte Themen