弹簧引导自定义log4j2日志文件的实例讲解

  

背景:因为从了,支持的格式有json和xml两种格式,此次实践主要使用的是xml的格式定义日志说明。

  

  

1。首先把spring-boot-starter-web以及spring-boot-starter包下面的spring-boot-starter-logging排除,然后引入spring-boot-starter-log4j2包。
  

        & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt; exclusions>   & lt; exclusion>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-logging   & lt;/exclusion>   & lt;/exclusions>   & lt;/dependency>      & lt; !——https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j2-->   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-log4j2   & lt; version> 1.5.8.RELEASE   & lt;/dependency>   之前      

2. pom中设置文件资源位置,以便通过pom中属性的修改文件中的变量。

        & lt; finalName> $ {project.name} & lt;/finalName>   & lt; sourceDirectory> src/main/java   & lt; testSourceDirectory> src/测试/java   & lt; resources>   & lt; resource>   & lt; directory> src/main/resources   & lt; filtering> true   & lt; includes>   & lt; include> * */* & lt;/include>   & lt;/includes>   & lt;/resource>   & lt;/resources>   之前      

  

设置变量替换属性
  

        & lt; properties>   & lt; project.build.sourceEncoding> UTF-8   & lt; project.reporting.outputEncoding> UTF-8   & lt; java.version> 1.8 & lt;/java.version>   & lt; log4j2.level> debug   & lt; log4j2.root.path>/opt/appstack/apache tomcat/日志/$ {project.name} & lt;/log4j2.root.path>   & lt; log4j2.error.path>/opt/appstack/apache tomcat/logs/$ {project.name} -error   & lt; log4j2.package.path>/opt/appstack/apache tomcat/logs/$ {project.name} -kk   & lt;/properties>      

  

3。因为弹簧引导对配置文件yml或者属性有保护作用,因此pom中的变量需要添加一个插件才能够替换配置文件中的变量。
  

        & lt; pluginManagement>   & lt; plugins>   & lt; plugin>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-maven-plugin   & lt;/plugin>   & lt; !——spring-boot为了保护application.yml和application.properties,修改了默认的占位符${…}为@,@——比;   & lt; !——为春天了引导的yml和属性文件能够使用maven变量替换,使用${}占位符——比;   & lt; plugin>   & lt; artifactId> maven-resources-plugin   & lt; configuration>   & lt; encoding> utf-8   & lt; useDefaultDelimiters> true   & lt;/configuration>   & lt;/plugin>   & lt;/plugins>   & lt;/pluginManagement>      

  

4。本示例采用的是弹簧引导的yml配置,在application.yml中配置log4j2的配置文件

  

日志:
  配置类路径:log4j2。xml
  

  

如果想对不同环境配置不同的log4j2的配置文件,可以在相应的application.yml中设置配置值

  

春天引导自定义log4j2日志文件的实例讲解

  

5。配置log4j2.xml的配置文件

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;配置状态=熬妗北?   & lt; !——全局参数——比;   & lt; Properties>   & lt;属性名=澳J健痹? d {yyyy-MM-dd HH: mm: ss,瑞士}% 5 p % c {1}: % L - % m % n   & lt;/Properties>   & lt; Loggers>   & lt;根水平=暗魇浴北?   & lt; AppenderRef ref=翱刂铺ā弊4? lt;/AppenderRef>   & lt; AppenderRef ref=" rolling_file "祝辞& lt;/AppenderRef>   & lt;/Root>   & lt; !——只将com.kk.springboot.demo写到文件——比;   & lt;记录器name=" com.kk.springboot.demo水平=" $ {log4j2.level} "比;   & lt; AppenderRef ref="文件"祝辞& lt;/AppenderRef>   & lt;/Logger>   & lt;/Loggers>   & lt; Appenders>   & lt;控制台name=翱刂铺ā蹦勘?癝YSTEM_OUT”遵循=" true "比;   & lt; !——控制台只输出水平及以上级别的信息——比;   & lt; ThresholdFilter水平="信息"/比;   & lt; PatternLayout>   & lt; Pattern> ${模式}& lt;/Pattern>   & lt;/PatternLayout>   & lt;/Console>   & lt; !——同一来源的Appender可以定义多个RollingFile,定义按天存储日志——比;   & lt; RollingFile name=" rolling_file "   文件名=" $ {log4j2.root.path} . log”   filePattern=" $ {log4j2.root.path} _ % d {yyyy-MM-dd} . log”比;   & lt; ThresholdFilter水平="信息"/比;   & lt; PatternLayout>   & lt; Pattern> ${模式}& lt;/Pattern>   & lt;/PatternLayout>   & lt; Policies>   & lt; TimeBasedTriggeringPolicy区间=" 1 "/比;   & lt; !——& lt; SizeBasedTriggeringPolicy大?? KB/祝辞——比;   & lt;/Policies>   & lt;/RollingFile>   & lt;文件名称="文件"文件名=" $ {log4j2.package.path} . log "比;   & lt; !——, lt; !, mdash;控制台只输出水平及以上级别的信息(onMatch),其他的直接拒绝(onMismatch), mdash;和gt;——比;   & lt; ThresholdFilter水平=暗魇浴?比;   & lt; PatternLayout>   & lt; Pattern> ${模式}& lt;/Pattern>   & lt;/PatternLayout>   & lt;/File>   & lt;/Appenders>   & lt;/configuration>

弹簧引导自定义log4j2日志文件的实例讲解