#log4j2 项目中使用@TOC
log4j2 Spring Boot项目中布置以及使用(使用mvn依赖)
log4j2的日志能力较强,别的不多BB,直接干货
我使用的是 Spring Boot Log4j 2 Starter 版本中的 2.2.2.RELEASE 版本号
首先,在spring Boot项目中移出spring Boot框架自己的log4j日志系统或者框架
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
maven中的 exclusions 属性,在此不多说,不清楚的可看链接!!!
将spring Boot 自带的log4g 移出之后,将选定的版本: Spring Boot Log4j 2 Starter 版本中的 2.2.2.RELEASE 版本 的maven依赖引入到项目中
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
在项目的resource 文件中,配置log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- ${sys:user.home} 系统用户路径 可以替换成你想要日志打印的路径 -->
<configuration status="INFO" monitorInterval="10">
<!--先定义所有的appender-->
<appenders>
<!--这个输出控制台的配置; name 随便起,就是一个标记 target 打印的形式,默认的-->
<console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
</console>
<!-- fileName 指定log文件输出位置 append:true 追加 false 不追加并且清空 -->
<!-- 这个File 一般是纯粹测试时使用,一般用 console 或者 RollingFile 较多 -->
<File name="ToFile" fileName=" ${sys:user.home}/sms-log4j-test.log" append="true">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<RollingFile name="fileInfo" fileName=" ${sys:user.home}/info.log"
filePattern=" $ ${sys:user.home}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<!-- TimeBasedTriggeringPolicy 这个属性是,根据时间进行日志的分割,interval="1" modulate="true" -->
<!-- 按时间分割日志:需要 filePattern 的配置的日期格式以及 interval的属性配置共同生效-->
<TimeBasedTriggeringPolicy/>
<!-- SizeBasedTriggeringPolicy 配置日志文件大小,如果日志文件的大小超过 size的配置,就会分割,否则就会每天一个日志文件 -->
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
<!-- DefaultRolloverStrategy 表示同一个文件下,最多有几个log日志文件 默认是7个,这个随便设置 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile name="fileWarn" fileName=" ${sys:user.home}/warn.log"
filePattern=" ${sys:user.home}/$${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="500 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile name="fileError" fileName=" ${sys:user.home}/error.log"
filePattern=" ${sys:user.home}/$${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="500 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</appenders>
<loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息 或者设置成更高的日志级别-->
<logger name="org.springframework" level="INFO"></logger>
<logger name="org.mybatis" level="INFO"></logger>
<root level="INFO">
<!-- 如果不想使用哪个日志打印,直接注释掉或者删除即可-->
<appender-ref ref="console"/>ToFile
<appender-ref ref="ToFile"/>
<appender-ref ref="fileInfo"/>
<appender-ref ref="fileWarn"/>
<appender-ref ref="fileError"/>
</root>
</loggers>