如何在Spring Boot中使用Log4J2复合配置 [英] How to use Log4J2 composite configuration with Spring Boot

查看:80
本文介绍了如何在Spring Boot中使用Log4J2复合配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using Spring Boot 2.0.1 starter with log4j2 using following POM. WAR file is hosted in Tomcat 8 (instead of using embedded tomcat). Application logs are written to console instead of writing to log file. Apparently Spring Boot's XML configuration is overwrites the one configured in application.

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 uses composite configuration where configuration is split in 2 xml files: log4j2-base.xml and log4j2-env.xml

资源目录包含log4j2.component.properties,其内容如下:

Resources directory contains log4j2.component.properties with following content:

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

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

Resources directory also contains log4j2-base.xml. File log4j2-env.xml is part of environment specific JAR file that is already placed into class path.

日志:

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

推荐答案

我们尝试了以下操作,并且有效:

We tried the following and it worked:

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

  1. Rename the file log4j-base.xml to log4j2.xml
  2. In log4j2.component.properties, rename log4j-base.xml to log4j2.xml like below:

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

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

这篇关于如何在Spring Boot中使用Log4J2复合配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆