一尘不染

如何在Spring Boot中使用Log4J2复合配置

spring-boot

我正在通过以下POM将Spring Boot 2.0.1入门版与log4j2一起使用。WAR文件托管在Tomcat
8中(而不是使用嵌入式tomcat)。应用程序日志将写入控制台,而不是写入日志文件。显然,Spring Boot的XML配置将覆盖应用程序中配置的XML。

POM:

<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.apache.logging.log4j</groupId>
        <artifactId>log4j-web</artifactId>
    </dependency>

Log4j2使用复合配置,其中配置分为2个xml文件:log4j2-base.xmllog4j2-env.xml

资源目录包含log4j2.component.properties以下内容:

log4j.configurationFile=log4j2-base.xml,log4j2-env.xml

资源目录还包含log4j2-base.xml。文件log4j2-env.xml是特定于环境的JAR文件的一部分,该文件已放置在类路径中。

日志:

DEBUG StatusLogger Configuration XmlConfiguration[location=jar:file:/usr/mware/jwsAppDetails/app1/webapps/myProject/WEB-INF/lib/spring-boot-2.0.1.RELEASE.jar!/org/springframework/boot/logging/log4j2/log4j2.xml] initialized
DEBUG StatusLogger Starting configuration XmlConfiguration[location=jar:file:/usr/mware/jwsAppDetails/app1/webapps/myProject/WEB-INF/lib/spring-boot-2.0.1.RELEASE.jar!/org/springframework/boot/logging/log4j2/log4j2.xml]
DEBUG StatusLogger Started configuration XmlConfiguration[location=jar:file:/usr/mware/jwsAppDetails/app1/webapps/myProject/WEB-INF/lib/spring-boot-2.0.1.RELEASE.jar!/org/springframework/boot/logging/log4j2/log4j2.xml] OK.
TRACE StatusLogger Stopping org.apache.logging.log4j.core.config.composite.CompositeConfiguration@40575bb9 [configurations=[XmlConfiguration[location=/usr/mware/jwsAppDetails/app1/webapps/myProject/WEB-INF/classes/log4j2-base.xml], XmlConfiguration[location=jar:file:/usr/mware/jwsAppDetails/app1/lib/myProject.jar!/log4j2-env.xml]], mergeStrategy=org.apache.logging.log4j.core.config.composite.DefaultMergeStrategy@583fc0cb, rootNode=null, listeners=[], pluginPackages=[], pluginManager=org.apache.logging.log4j.core.config.plugins.util.PluginManager@278307b, isShutdownHookEnabled=true, shutdownTimeoutMillis=0, scriptManager=org.apache.logging.log4j.core.script.ScriptManager@185463aa]...
TRACE StatusLogger CompositeConfiguration notified 8 ReliabilityStrategies that config will be stopped.
TRACE StatusLogger CompositeConfiguration stopping 7 LoggerConfigs.
TRACE StatusLogger CompositeConfiguration stopping root LoggerConfig.
TRACE StatusLogger CompositeConfiguration notifying ReliabilityStrategies that appenders will be stopped.
TRACE StatusLogger CompositeConfiguration stopping remaining Appenders.
DEBUG StatusLogger Shutting down RollingFileManager null
DEBUG StatusLogger Shutting down RollingFileManager {}null
DEBUG StatusLogger All asynchronous threads have terminated
DEBUG StatusLogger RollingFileManager shutdown completed with status true
DEBUG StatusLogger Shut down RollingFileManager null, all resources released: true
DEBUG StatusLogger Appender RollingFile stopped with status true
TRACE StatusLogger CompositeConfiguration stopped 1 remaining Appenders.
TRACE StatusLogger CompositeConfiguration cleaning Appenders from 8 LoggerConfigs.
DEBUG StatusLogger Stopped org.apache.logging.log4j.core.config.composite.CompositeConfiguration@40575bb9 [configurations=[XmlConfiguration[location=/usr/mware/jwsAppDetails/app1/webapps/myProject/WEB-INF/classes/log4j2-base.xml], XmlConfiguration[location=jar:file:/usr/mware/jwsAppDetails/app1/lib/myProject.jar!/log4j2-env.xml]], mergeStrategy=org.apache.logging.log4j.core.config.composite.DefaultMergeStrategy@583fc0cb, rootNode=null, listeners=[], pluginPackages=[], pluginManager=org.apache.logging.log4j.core.config.plugins.util.PluginManager@278307b, isShutdownHookEnabled=true, shutdownTimeoutMillis=0, scriptManager=org.apache.logging.log4j.core.script.ScriptManager@185463aa] OK
TRACE StatusLogger Reregistering MBeans after reconfigure. Selector=org.apache.logging.log4j.core.selector.ClassLoaderContextSelector@77aa3299
TRACE StatusLogger Reregistering context (1/1): '2190fd23' org.apache.logging.log4j.core.LoggerContext@64150381

阅读 558

收藏
2020-05-30

共1个答案

一尘不染

我们尝试了以下方法,并且有效:

  1. 将文件log4j-base.xml重命名为log4j2.xml
  2. 在log4j2.component.properties中,将log4j-base.xml重命名为log4j2.xml,如下所示:

log4j.configurationFile = log4j2.xml,log4j2-env.xml

2020-05-30