logback 配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include
resource="org/springframework/boot/logging/logback/defaults.xml" />
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="fill-in-submit"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_PATH}/fill-in-submit.log</file>
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> -->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/system/%d{yyyy-MM-dd}/log/fill-in-submit.%i.log
</fileNamePattern>
<!--<FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/fill-in-submit.%i.log</FileNamePattern>-->
<maxFileSize>30MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>30GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="ROLLING-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>-->
<fileNamePattern>${LOG_PATH}/system/%d{yyyy-MM-dd}/${LOG_FILE}.%i.log</fileNamePattern>
<!-- each file should be at most 10MB -->
<!-- keep 30 days worth of history, but at most 1GB -->
<maxFileSize>30MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="FILE-API" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- This is MDC value -->
<!-- We will assign a value to 'logFileName' via Java code -->
<discriminator>
<key>logFileName</key>
<defaultValue>system-api</defaultValue>
</discriminator>
<sift>
<!-- A standard RollingFileAppender, the log file is based on 'logFileName' at runtime -->
<appender name="FILE-${logFileName}"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file>${LOG_PATH}/%d{yyyy-MM-dd}/${logFileName}.log</file>-->
<!--<file>
${LOG_PATH}/%d{yyyy-MM-dd,aux}/system.%d{yyyy-MM-dd-HH-mm}.log
</file>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} - %msg%n
</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/api/%d{yyyy-MM-dd}/${logFileName}.%i.log
</fileNamePattern>
<maxFileSize>30MB</maxFileSize>
<!-- 保存日志天数-->
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>
</sift>
</appender>
<!--<logger name="com.linewell.form.server.framework.util.HttpClientOperator" level="INFO" additivity="false">-->
<logger name="loggerApi" level="INFO" additivity="false">
<!-- additivity false 子 appender 打印了日志,父日志不打印 -->
<appender-ref ref="FILE-API" />
</logger>
<!-- 级别从低到高:TRACE、DEBUG、INFO、WARN、ERROR;打印等于或高于本级别的日志 -->
<logger name="org.springframework" level="INFO" />
<logger name="com.linewell.form.server" level="DEBUG" />
<!-- 设置ShardingSphere-SQL日志输出等级 -->
<logger name="ShardingSphere-SQL" level="DEBUG"/>
<logger name="fillinsubmit" level="INFO" additivity="false">
<appender-ref ref="fill-in-submit"></appender-ref>
</logger>
<root level="ERROR">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ROLLING-FILE" />
</root>
</configuration>
配置简要说明
- 支持应用 '$' 环境变量, 可在spring 容器初始化时 init方式注入
<file>${LOG_PATH}/fill-in-submit.log</file>
- 动态创建 日志文件名,MDC 方式传入变量,logFileName 变量, 需要设置 defalutValue
<appender name="FILE-API" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- This is MDC value -->
<!-- We will assign a value to 'logFileName' via Java code -->
<discriminator>
<key>logFileName</key>
<defaultValue>system-api</defaultValue>
</discriminator>
<sift>
<!-- A standard RollingFileAppender, the log file is based on 'logFileName' at runtime -->
<appender name="FILE-${logFileName}"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file>${LOG_PATH}/%d{yyyy-MM-dd}/${logFileName}.log</file>-->
<!--<file>
${LOG_PATH}/%d{yyyy-MM-dd,aux}/system.%d{yyyy-MM-dd-HH-mm}.log
</file>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} - %msg%n
</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/api/%d{yyyy-MM-dd}/${logFileName}.%i.log
</fileNamePattern>
<maxFileSize>30MB</maxFileSize>
<!-- 保存日志天数-->
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>
</sift>
</appender>
- 设置打印日志级别,才能输出日志
<logger name="loggerApi" level="INFO" additivity="false">
<!-- additivity false 子 appender 打印了日志,父日志不打印 -->
<appender-ref ref="FILE-API" />
</logger>
- 日志文件大小限制,日志保存天数
<maxFileSize>30MB</maxFileSize>
<!-- 保存日志天数-->
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
每个文件最大30M ,日志文件保存30天,所有日志文件总和 10GB, 例如 日志按日期存放,触发了 日志总和 10GB ,会自动删除 旧的日期 里的日志,始终保持日志总和 10GB