<?xml version="1.0" encoding="UTF-8" ?> <!-- <configuration> <appender></appender> //存在1或多个,功能指定记录输出目的地 <root></root> //最多存在一个,根logger <logger><logger> //存在1或多个,普通logger </configuration> --> <configuration> <!-- 从本地spring文件获取信息 获取项目名称 --> <springProperty scope="context" name="PROJECT_NAME" source="spring.application.name"/> <!-- 存储在文件中的打印日志 格式 --> <property name="FILE_PATTEN" value="[%level] [%date{ISO8601}] [%logger] [%thread] [%X{clientIp}] [%X{requestId}] [%X{serverIp}] [%X{X-B3-TraceId}] %msg%n"/> <!-- 打印在控制台文件输出格式 --> <property name="CONSOLE_PATTEN" value="[%highlight(%-5level)] [%date{ISO8601}] [%boldGreen(%logger)] [%boldYellow(%thread)] [%X{clientIp}] [%cyan(%X{requestId})] [%X{serverIp}] %msg%n"/> <!-- 日志打印在 控制台 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_PATTEN}</pattern> </encoder> </appender> <!--按照文件个数 和日志文件大小进行的回收策略 每天最多保留20个 每个最大100兆,最多保留一天--> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${user.home}/logs/${PROJECT_NAME}/${PROJECT_NAME}.log</file> <append>true</append> <!--指定日志输出级别 到不同的日志--> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <!--文件超过100兆,新建一个日志文件,日志文件最多20个,每天清理一次 --> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <!--设置以文件结尾zip表示压缩 --> <fileNamePattern>${user.home}/logs/${PROJECT_NAME}/${PROJECT_NAME}.%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <!--日志归档大小 --> <maxFileSize>1kB</maxFileSize> </triggeringPolicy> <encoder> <pattern>${FILE_PATTEN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--按照日志级别打印--> <appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${user.home}/logs/${PROJECT_NAME}/error/${PROJECT_NAME}.log</file> <append>true</append> <!--指定日志输出级别 到不同的日志 可以自定义过滤器 输出 各种不同类型日志 如sql--> <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.FixedWindowRollingPolicy"> <fileNamePattern>${user.home}/logs/${PROJECT_NAME}/${PROJECT_NAME}_error.%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>1KB</maxFileSize> </triggeringPolicy> <encoder> <pattern>${FILE_PATTEN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 日志按天压缩归档 根据设置的保留天数自动更新--> <appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${user.home}/logs/${PROJECT_NAME}/info/${PROJECT_NAME}.log</file> <append>true</append> <!--指定日志输出级别 到不同的日志 可以自定义过滤器 输出 各种不同类型日志 如sql--> <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.TimeBasedRollingPolicy"> <!-- 生成按编号的认知 i%代表个数--> <!--<fileNamePattern>${user.home}/logs/${PROJECT_NAME}/info/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log--> <fileNamePattern>${user.home}/logs/${PROJECT_NAME}/info/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log.zip </fileNamePattern> <!-- 日志多大进行归档--> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 保留的天数 --> <MaxHistory>2</MaxHistory> </rollingPolicy> <encoder> <pattern>${FILE_PATTEN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--指定打印到什么环境日志 设置打印日志级别 到控制台 和文件--> <springProfile name="test"> <root level="DEBUG"> <appender-ref ref="console"/> <appender-ref ref="file"/> <appender-ref ref="error_file"></appender-ref> <appender-ref ref="info_file"></appender-ref> </root> </springProfile> </configuration>
原文:https://www.cnblogs.com/love-htt/p/12692467.html