我正在通过以下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.xml和log4j2-env.xml
log4j2-base.xml
log4j2-env.xml
资源目录包含log4j2.component.properties以下内容:
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
我们尝试了以下方法,并且有效:
log4j.configurationFile = log4j2.xml,log4j2-env.xml