| drone-ops/drone-flow/src/main/resources/log/logback-dev.xml | ●●●●● patch | view | raw | blame | history | |
| drone-ops/drone-flow/src/main/resources/log/logback-prod.xml | ●●●●● patch | view | raw | blame | history | |
| drone-ops/drone-flow/src/main/resources/log/logback-test.xml | ●●●●● patch | view | raw | blame | history |
drone-ops/drone-flow/src/main/resources/log/logback-dev.xml
New file @@ -0,0 +1,113 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" debug="false"> <!-- 自定义参数监听 --> <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 彩色日志依赖的渲染类 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> </appender> <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'> <then> <!-- 推送日志至elk --> <appender name="STDOUT_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> </appender> </then> </if> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="${STDOUT_APPENDER}"/> </root> <logger name="net.sf.ehcache" level="INFO"/> <logger name="druid.sql" level="INFO"/> <!-- MyBatis log configure --> <logger name="com.apache.ibatis" level="INFO"/> <logger name="org.mybatis.spring" level="INFO"/> <logger name="java.sql.Connection" level="INFO"/> <logger name="java.sql.Statement" level="INFO"/> <logger name="java.sql.PreparedStatement" level="INFO"/> <!-- 减少部分debug日志 --> <logger name="druid.sql" level="INFO"/> <logger name="org.apache.shiro" level="INFO"/> <logger name="org.mybatis.spring" level="INFO"/> <logger name="org.springframework" level="INFO"/> <logger name="org.springframework.context" level="WARN"/> <logger name="org.springframework.beans" level="WARN"/> <logger name="com.baomidou.mybatisplus" level="INFO"/> <logger name="org.apache.ibatis.io" level="INFO"/> <logger name="org.apache.velocity" level="INFO"/> <logger name="org.eclipse.jetty" level="INFO"/> <logger name="io.undertow" level="INFO"/> <logger name="org.xnio.nio" level="INFO"/> <logger name="org.thymeleaf" level="INFO"/> <logger name="springfox.documentation" level="INFO"/> <logger name="org.hibernate.validator" level="INFO"/> <logger name="com.netflix.loadbalancer" level="INFO"/> <logger name="com.netflix.hystrix" level="INFO"/> <logger name="com.netflix.zuul" level="INFO"/> <logger name="de.codecentric" level="INFO"/> <!-- cache INFO --> <logger name="net.sf.ehcache" level="INFO"/> <logger name="org.springframework.cache" level="INFO"/> <!-- cloud --> <logger name="org.apache.http" level="INFO"/> <logger name="com.netflix.discovery" level="INFO"/> <logger name="com.netflix.eureka" level="INFO"/> <!-- 业务日志 --> <Logger name="org.springblade" level="INFO"/> <Logger name="org.springblade.core.tenant" level="INFO"/> <Logger name="org.springblade.core.version" level="INFO"/> <!-- 减少nacos日志 --> <logger name="com.alibaba.nacos" level="ERROR"/> </configuration> drone-ops/drone-flow/src/main/resources/log/logback-prod.xml
New file @@ -0,0 +1,222 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" debug="false"> <!-- 自定义参数监听 --> <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 彩色日志依赖的渲染类 --> <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="LOG_PATH" value="${LOG_PATH:-/data/logs/${springAppName}}"/> <!-- 彩色日志格式 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 DEBUG --> <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/debug/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到100mb的时候开始切分,最多保留7天,但最大到20GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>100MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 INFO --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/info/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到30mb的时候开始切分,最多保留7天,但最大到3GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>30MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 warn 级别 --> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/warn/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/error/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'> <then> <!-- 推送日志至elk --> <appender name="INFO_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 推送日志至elk --> <appender name="ERROR_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> </then> </if> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="${INFO_APPENDER}"/> <appender-ref ref="${ERROR_APPENDER}"/> </root> <logger name="net.sf.ehcache" level="INFO"/> <logger name="druid.sql" level="INFO"/> <!-- 减少nacos日志 --> <logger name="com.alibaba.nacos" level="ERROR"/> <logger name="com.dji.sample" level="DEBUG"> <appender-ref ref="ERROR"/> <appender-ref ref="INFO"/> <appender-ref ref="DEBUG"/> </logger> </configuration> drone-ops/drone-flow/src/main/resources/log/logback-test.xml
New file @@ -0,0 +1,222 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" debug="false"> <!-- 自定义参数监听 --> <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 彩色日志依赖的渲染类 --> <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="LOG_PATH" value="${LOG_PATH:-/data/logs/${springAppName}}"/> <!-- 彩色日志格式 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 DEBUG --> <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/debug/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到100mb的时候开始切分,最多保留7天,但最大到20GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>100MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 INFO --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/info/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到30mb的时候开始切分,最多保留7天,但最大到3GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>30MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 warn 级别 --> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/warn/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_PATH}/error/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'> <then> <!-- 推送日志至elk --> <appender name="INFO_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 推送日志至elk --> <appender name="ERROR_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> </then> </if> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="${INFO_APPENDER}"/> <appender-ref ref="${ERROR_APPENDER}"/> </root> <logger name="net.sf.ehcache" level="INFO"/> <logger name="druid.sql" level="INFO"/> <!-- 减少nacos日志 --> <logger name="com.alibaba.nacos" level="ERROR"/> <logger name="com.dji.sample" level="DEBUG"> <appender-ref ref="ERROR"/> <appender-ref ref="INFO"/> <appender-ref ref="DEBUG"/> </logger> </configuration>