<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<!-- 项目名称 -->
<property name="project_name" value="ins-os-http-custom"/>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="log_home" value="/data/log"/>
<!-- 日志文件保留天数 -->
<property name="max_history" value="30"/>
<!-- 日志文件最大的大小-->
<property name="max_file_size" value="50MB"/>
<!-- 日志文件上限大小-->
<property name="total_size" value="20GB"/>
<!-- 日志格式 -->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger- %msg%n"/>
<!-- 日志编码-->
<property name="log_charset" value="UTF-8"/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<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 name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>${log_charset}</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="all_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${log_home}/${project_name}/all-%d{yyyy-MM-dd}-%i.log.gz</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>${max_history}</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 -->
<totalSizeCap>${total_size}</totalSizeCap>
<!-- 每个日志文件的最大值 -->
<maxFileSize>${max_file_size}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>${log_pattern}</pattern>
<charset>${log_charset}</charset>
</encoder>
</appender>
<!-- INFO级别日志 -->
<appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${log_home}/${project_name}/info-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>${max_history}</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 -->
<totalSizeCap>${total_size}</totalSizeCap>
<!-- 每个日志文件的最大值 -->
<maxFileSize>${max_file_size}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${log_pattern}</pattern>
<charset>${log_charset}</charset>
</encoder>
</appender>
<!-- WARN级别日志 -->
<appender name="warn_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${log_home}/${project_name}/warn-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>${max_history}</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 -->
<totalSizeCap>${total_size}</totalSizeCap>
<!--日志文件最大的大小-->
<maxFileSize>${max_file_size}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${log_pattern}</pattern>
<charset>${log_charset}</charset>
</encoder>
</appender>
<!-- ERROR级别日志 -->
<appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${log_home}/${project_name}/error-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
<!--日志文件保留天数-->
<maxHistory>${max_history}</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 -->
<totalSizeCap>${total_size}</totalSizeCap>
<!--日志文件最大的大小-->
<maxFileSize>${max_file_size}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${log_pattern}</pattern>
<charset>${log_charset}</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="all_file"/>
<!--
<appender-ref ref="info_file"/>
<appender-ref ref="warn_file"/>
-->
<appender-ref ref="error_file"/>
</root>
</configuration>