<?xml version="1.0" encoding="UTF-8"?>
|
<configuration>
|
<!--定义日志文件的存储路径-->
|
<!--<property name="LOG_HOME" value="/var/tmp/website-blog-web"/>-->
|
<!-- <springProperty name="logDir" source="logging.file.path"/>-->
|
<springProperty name="logDir" source="logging.file.path" />
|
<!-- 彩色日志依赖的渲染类 -->
|
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
|
<conversionRule conversionWord="wex"
|
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
|
<conversionRule conversionWord="wEx"
|
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
<!-- 彩色日志格式 -->
|
<property name="CONSOLE_LOG_PATTERN"
|
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
|
|
<!-- 控制台 appender -->
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
<encoder>
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
|
<charset>UTF-8</charset>
|
</encoder>
|
</appender>
|
|
<!--按天生成日志-->
|
<!-- 出错日志 appender -->
|
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
|
<!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是demo.log -->
|
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名 -->
|
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<File>${logDir}/error.log</File>
|
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
|
<!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<!-- 按天回滚 daily -->
|
<fileNamePattern>${logDir}/%d{yyyy-MM-dd}/error.%i.log</fileNamePattern>
|
<!-- 日志最大的历史 30天 -->
|
<maxHistory>30</maxHistory>
|
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成1KB看效果 -->
|
<maxFileSize>10MB</maxFileSize>
|
</timeBasedFileNamingAndTriggeringPolicy>
|
</rollingPolicy>
|
<encoder>
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{req.remoteHost} %X{req.requestURI} %X{req.queryString}
|
[%X{logId}] %-5level %logger{36} - %msg%n
|
</pattern>
|
<charset>UTF-8</charset>
|
</encoder>
|
</appender>
|
|
<!-- 异步输出 -->
|
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
|
<!-- 不丢失日志,默认的,如果队列的 80% 已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
<discardingThreshold>0</discardingThreshold>
|
<!-- 更改默认的队列的深度,该值会影响性能,默认值为256 -->
|
<queueSize>256</queueSize>
|
<!-- 添加附加的appender,最多只能添加一个 -->
|
<appender-ref ref="FILE_ERROR"/>
|
</appender>
|
|
<!-- 测试环境+开发环境,日志级别为INFO且不写日志文件 -->
|
<springProfile name="dev">
|
<root level="info">
|
<appender-ref ref="STDOUT"/>
|
</root>
|
</springProfile>
|
|
<springProfile name="local">
|
<root level="info" >
|
<appender-ref ref="STDOUT"/>
|
</root>
|
</springProfile>
|
|
<springProfile name="xm">
|
<root level="info" >
|
<appender-ref ref="STDOUT"/>
|
</root>
|
</springProfile>
|
<!-- 生产环境. 日志级别为WARN且写日志文件-->
|
<springProfile name="prod,docker">
|
<root level="warn">
|
<appender-ref ref="STDOUT"/>
|
<appender-ref ref="ASYNC"/>
|
</root>
|
</springProfile>
|
|
</configuration>
|