<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO" monitorInterval="60">
<Properties>
<Property name="app.name"></Property>
<Property name="log.home">D:/logs/</Property>
<!-- <Property name="log.pattern">[%d] [%-5p] [%t] [%c{3.}] [%l] [_] [%m]%n</Property> -->
<Property name="log.file.charset">UTF-8</Property>
<Property name="log.file.pattern">
[%d] [%-5p] [%t] [%c{3.}] %m%n
</Property>
<Property name="log.console.charset">UTF-8</Property>
<Property name="log.console.pattern">
%d %highlight{%-5p} %style{%pid}{magenta} --- [%15.15t] %style{%-37.37c{36}}{cyan} : %m%n%n
</Property>
</Properties>
<!--先定义所有的appender -->
<appenders>
<!-- 这个会打印出所有的info及以上级别的信息,每次大小超过size,则这size大小的日志会自动存入按年月日建立的文件夹下面并进行压缩,作为存档 -->
<RollingFile name="FILE_INFO" immediateFlush="false"
fileName="${log.home}${app.name}/info_${app.name}.log"
filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/info_${app.name}_%d{yyyyMMdd}_%i.log.gz">
<!-- 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<Filters>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
<Policies>
<TimeBasedTriggeringPolicy />
<!-- 日志文件归档大小 -->
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了99 -->
<DefaultRolloverStrategy max="99" />
</RollingFile>
<RollingFile name="FILE_WARN" immediateFlush="false"
fileName="${log.home}${app.name}/warn_${app.name}.log"
filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/warn_${app.name}_%d{yyyyMMdd}_%i.log.gz">
<Filters>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
<DefaultRolloverStrategy max="99" />
</RollingFile>
<RollingFile name="FILE_ERROR" immediateFlush="false"
fileName="${log.home}${app.name}/error_${app.name}.log"
filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/error_${app.name}_%d{yyyyMMdd}_%i.log.gz">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
<DefaultRolloverStrategy max="99" />
</RollingFile>
<!-- 控制终端输出 -->
<Console name="STDOUT" target="SYSTEM_OUT">
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout pattern="${log.console.pattern}" charset="${log.console.charset}" />
</Console>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
<loggers>
<!-- 配置日志的根节点 -->
<Root level="INFO">
<appender-ref ref="FILE_ERROR" />
<appender-ref ref="FILE_WARN" />
<appender-ref ref="FILE_INFO" />
<appender-ref ref="STDOUT" />
</Root>
<!-- 第三方日志系统 -->
<logger name="org.springframework.web" level="WARN"/>
<logger name="org.springboot.sample" level="WARN" />
</loggers>
</configuration>