<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="5 seconds"> <property name="LOG_PATH" value="/data/logs/product/"/> <property name="LOG_FILE" value="product"/> <!-- <if condition='property("apollo.bootstrap.enabled").contains("false")'>--> <!-- <then>--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{500}:%line - %msg%n</pattern> </encoder> </appender> <!-- <root>--> <!-- <appender-ref ref="console" />--> <!-- </root>--> <!-- </then>--> <!-- </if>--> <!-- info日志记录器,日期滚动记录 --> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%line - %msg%n</pattern> </encoder> <append>true</append> <file>${LOG_PATH}/${LOG_FILE}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${LOG_FILE}_%d{yyyy-MM-dd}.log.gz</fileNamePattern> </rollingPolicy> </appender> <!-- ERROR日志记录器,日期滚动记录 --> <appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%line - %msg%n</pattern> </encoder> <append>true</append> <file>${LOG_PATH}/${LOG_FILE}_error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${LOG_FILE}_error_%d{yyyy-MM-dd}.log.gz</fileNamePattern> </rollingPolicy> <!-- 此日志文件只记录ERROR级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <root level="info"> <appender-ref ref="file"/> <appender-ref ref="errorFile"/> <appender-ref ref="console" /> </root> </configuration>