<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="1 seconds">
<!-- 如果想从spring property中加载属性,需要将配置文件名称改为logback-spring.xml-->
<!-- <springProperty scope="context" name="LOG_DIR" source="logback.path"/>-->
<!-- resource在classpath中查找-->
<property resource="logback.properties"/>
<!-- file在项目根目录开始查找-->
<!-- <property file="src/main/resources/logback.properties"/>-->
<property name="FILE_LOG_PATTERN"
value="%d [%t] %-5level [%F : %L] - %msg%n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<Pattern>${FILE_LOG_PATTERN}</Pattern>
<!-- 是否将表达式打印在日志头部,默认false-->
<outputPatternAsHeader>true</outputPatternAsHeader>
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 是否支持多个JVM写入同一个文件,默认false -->
<!-- <prudent>false</prudent>-->
<!-- 是否追加已有文件,默认true-->
<!-- <append>true</append>-->
<!-- 指定文件-->
<file>${logback.path}/${logback.app}.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<!-- 是否将表达式打印在日志头部,默认false-->
<outputPatternAsHeader>true</outputPatternAsHeader>
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--如果日志文件名以 .gz 或者 .zip结尾,TimeBasedRollingPolicy支持在midnight(凌晨0点)自动压缩-->
<!--当fileNamePattern中定义了多个%d时,会选择第一个不是aux的作为翻滚策略-->
<fileNamePattern>
<!--按月划分目录,按天拆分日志-->
${logback.path}/%d{yyyy/MM,aux}/${logback.app}.%d{yyyy-MM-dd}.%i.zip
<!--按天划分目录,按分钟拆分日志-->
<!-- ${logback.path}/%d{yyyy/MM/dd,aux}/${logback.app}.%d{yyyy-MM-dd_HH-mm}.%i.zip-->
</fileNamePattern>
<!-- 注意,maxHistory代表的是最大存档文件的数量,不是存档期限。达到阈值时,删除最老的日志。
如果是按月份归档日志,maxHistory=6,表示6个月以前的存档文件会被删除。
可以配合fileNamePattern来达到 根据时间存档的效果.
-->
<maxHistory>60</maxHistory>
<!--SizeAndTimeBasedRollingPolicy特有,单个文件最大容量,达到阈值时根据%i来分割日志,从0开始。-->
<maxFileSize>200mb</maxFileSize>
<!--日志总量,达到阈值时,删除最老的日志-->
<totalSizeCap>3GB</totalSizeCap>
<!-- 是否在启动时执行存档删除,默认false。存档文件删除通常在翻滚期间执行。
但是,有些应用程序的寿命可能不够长,无法触发翻滚。
因此,对于这种生命周期很短的应用程序,归档删除可能永远没有机会执行。
通过将cleanHistoryOnStart设置为true,将在appender启动时执行存档删除。-->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<!-- triggeringPolicy决定是否触发rollingPolicy-->
<!-- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1kb</maxFileSize>
</triggeringPolicy>-->
</appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 是否支持多个JVM写入同一个文件,默认false -->
<!-- <prudent>false</prudent>-->
<!-- 是否追加已有文件,默认true-->
<!-- <append>true</append>-->
<!-- 指定文件-->
<file>${logback.path}/${logback.app}-error.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<!-- 是否将表达式打印在日志头部,默认false-->
<outputPatternAsHeader>true</outputPatternAsHeader>
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--如果日志文件名以 .gz 或者 .zip结尾,TimeBasedRollingPolicy支持在midnight(凌晨0点)自动压缩-->
<!--当fileNamePattern中定义了多个%d时,会选择第一个不是aux的作为翻滚策略-->
<fileNamePattern>
<!--按月划分目录,按天拆分日志-->
${logback.path}/%d{yyyy/MM,aux}/${logback.app}-error.%d{yyyy-MM-dd}.%i.zip
<!--按天划分目录,按分钟拆分日志-->
<!-- ${logback.path}/%d{yyyy/MM/dd,aux}/${logback.app}-error.%d{yyyy-MM-dd_HH-mm}.%i.zip-->
</fileNamePattern>
<!-- 注意,maxHistory代表的是最大存档文件的数量,不是存档期限。达到阈值时,删除最老的日志。
如果是按月份归档日志,maxHistory=6,表示6个月以前的存档文件会被删除。
可以配合fileNamePattern来达到 根据时间存档的效果.
-->
<maxHistory>60</maxHistory>
<!--SizeAndTimeBasedRollingPolicy特有,单个文件最大容量,达到阈值时根据%i来分割日志,从0开始。-->
<maxFileSize>200mb</maxFileSize>
<!--日志总量,达到阈值时,删除最老的日志-->
<totalSizeCap>3GB</totalSizeCap>
<!-- 是否在启动时执行存档删除,默认false。存档文件删除通常在翻滚期间执行。
但是,有些应用程序的寿命可能不够长,无法触发翻滚。
因此,对于这种生命周期很短的应用程序,归档删除可能永远没有机会执行。
通过将cleanHistoryOnStart设置为true,将在appender启动时执行存档删除。-->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<!-- triggeringPolicy决定是否触发rollingPolicy-->
<!-- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1kb</maxFileSize>
</triggeringPolicy>-->
<!-- 级别过滤器,也可以自定义过滤器,实现ch.qos.logback.core.filter.Filter-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- TRACE < DEBUG < INFO < WARN < ERROR < ALL /OFF-->
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="INFO"/>
<appender-ref ref="ERROR"/>
</root>
</configuration>
spring boot logback
最新推荐文章于 2023-07-24 21:54:27 发布