<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, --> <!-- appender是configuration的子节点,是负责写日志的组件。 --> <!-- ConsoleAppender:把日志输出到控制台 --> <springProperty name="appName" source="spring.application.name"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} %p [%X{traceId}] [%X{logId}] %logger{0} %msg%n</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 --> <charset>UTF-8</charset> </encoder> </appender> <!-- 使用json格式保存日志文件 --> <appender name="JSON_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./logs/windows-common.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 --> <!-- 文件名:log/demo.2017-12-05.0.log --> <fileNamePattern>./logs/windows-common.%d.%i.log</fileNamePattern> <!-- 每产生一个日志文件,该日志文件的保存期限为30天 --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成1KB看效果 --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %p [%X{traceId}] [%X{logId}] %logger{0} %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./logs/windows-error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <fileNamePattern>./logs/windows-error.%d.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %p [%X{traceId}] [%X{logId}] %logger{0} %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <springProfile name="local"> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="JSON_LOG"/> <appender-ref ref="ERROR_FILE"/> </root> </springProfile> <springProfile name="daily"> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="JSON_LOG"/> <appender-ref ref="ERROR_FILE"/> </root> </springProfile> <springProfile name="test"> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="JSON_LOG"/> <appender-ref ref="ERROR_FILE"/> </root> </springProfile> <springProfile name="prod"> <root level="INFO"> <appender-ref ref="JSON_LOG"/> <appender-ref ref="ERROR_FILE"/> </root> <logger name="com.xxl.job" level="WARN"/> <logger name="io" level="WARN"/> <logger name="org" level="WARN"/> <logger name="javax" level="WARN"/> <logger name="com.netflix" level="WARN"/> <logger name="springfox" level="WARN"/> </springProfile> </configuration>