Spring Boot系列(二)使用log4j2进行日志管理

上篇博客讲了如何创建一个springboot的应用以及application.yml的一些简单配置,若有不清楚的小伙伴请移步Spring Boot系列(一)初识SpringBoot
本篇博客就来讲讲springboot如何使用log4j2进行日志管理,springboot应用默认的日志记录组件是logback,然而我之前一直都是使用log4j来记录日志的,对于logback我实在是用不来,所以打算还是使用log4j。一番搜索下,发现log4j已经停止更新了,现在都使用它的升级版log4j2了,而且它的性能要比log4j强大许多。好了,至于log4j2,log4j和logback的区别这里就不多做介绍了,感兴趣的小伙伴可以自行搜索资料。下面就说说如何配置log4j2作为springboot的日志组件以及自定义日志配置
首先,我们得先建一个springboot项目,这个我就当作你们都会了。修改pom.xml如下

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-starter-webartifactId>
	<exclusions>
	
		<exclusion>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-loggingartifactId>
		exclusion>
	exclusions>
dependency>

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-starter-log4j2artifactId>
dependency>
		

然后我们在src/main/resources目录下新建一个log4j2-spring.xml文件。里面写log4j2的自定义配置









<configuration status="INFO" monitorInterval="30">

     

     <appenders>

         

         <console name="Console" target="SYSTEM_OUT">

         

             <PatternLayout pattern="%4p %d{yyyy-MM-dd HH:mm:ss.SSS} (%F\:%L)   -   %m%n"/>

         console>

         

         <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"

                      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">

                    

             <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>

             <PatternLayout pattern="%4p %d{yyyy-MM-dd HH\:mm\:ssS} (%F\:%L)  -  %m%n"/>

             <Policies>

                 <TimeBasedTriggeringPolicy/>

                 <SizeBasedTriggeringPolicy size="100 MB"/>

             Policies>

         RollingFile>

         <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"

                      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">

             <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>

             <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

             <Policies>

                 <TimeBasedTriggeringPolicy/>

                 <SizeBasedTriggeringPolicy size="100 MB"/>

             Policies>

             

             <DefaultRolloverStrategy max="20"/>

         RollingFile>

         <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"

                      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">

             <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>

             <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

             <Policies>

                 <TimeBasedTriggeringPolicy/>

                 <SizeBasedTriggeringPolicy size="100 MB"/>

             Policies>

         RollingFile>

     appenders>

     

     <loggers>

         

         <logger name="org.springframework" level="INFO">logger>

         <logger name="org.mybatis" level="INFO">logger>
         
         <logger name="org.hibernate" level="INFO">logger>
         
         <logger name="com.zaxxer.hikari" level="INFO">logger>
         
         <logger name="org.thymeleaf" level="INFO">logger>

         <root level="all">

             <appender-ref ref="Console"/>
			 
         root>

     loggers>

 configuration>

然后在application.yml中配置log4j2-spring.xml文件的路径

logging:
  config: classpath:log4j2-spring.xml

这样就OK了
小伙们有没有发现每次我们修改代码后都得自己重启项目,改动才会生效,这样显得特别麻烦。我们可以在pom.xml中添加以下依赖

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-devtoolsartifactId>
	<optional>trueoptional>
dependency>

这样,我们每次改动后,只需要保存一下,项目便会自动重启,省事

你可能感兴趣的:(Spring Boot系列(二)使用log4j2进行日志管理)