<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <contextName>${APP_NAME}</contextName> <!--定义日志文件的存储地址 --> <springProperty name="APP_NAME" scope="context" source="spring.application.name"/> <property name="LOG_HOME" value="logs/${APP_NAME}"/> <!--<springProperty name="LOG_FILE" scope="context" source="logging.file" defaultValue="logs/${APP_NAME}/${APP_NAME}.log"/>--> <springProperty name="LOG_MAXFILESIZE" scope="context" source="logback.filesize" defaultValue="50MB"/> <springProperty name="LOG_FILEMAXDAY" scope="context" source="logback.filemaxday" defaultValue="1"/> <springProperty name="ServerIP" scope="context" source="spring.cloud.client.ip-address" defaultValue="0.0.0.0"/> <springProperty name="ServerPort" scope="context" source="server.port" defaultValue="0000"/> <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="[${APP_NAME}:${ServerIP}:${ServerPort}] %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%level){blue} %clr(${PID}){magenta} %clr([%thread]){orange} %clr(%logger){cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" /> <property name="CONSOLE_LOG_PATTERN_NO_COLOR" value="[${APP_NAME}-${ServerIP}-${ServerPort}] %d{yyyy-MM-dd HH:mm:ss.SSS} %level ${PID} [%thread] %logger %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" /> <property name="CLEAR_LOG_ON_START" value="true" /> <!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />--> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成常规日志文件 --> <appender name="FileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/${APP_NAME}/${APP_NAME}.log</file> <encoder> <pattern>${CONSOLE_LOG_PATTERN_NO_COLOR}</pattern> <charset>UTF-8</charset> </encoder> <!-- 基于时间的分包策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/${APP_NAME}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!--保留时间,单位:天--> <MaxHistory>${LOG_FILEMAXDAY}</MaxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${LOG_MAXFILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <cleanHistoryOnStart>${CLEAR_LOG_ON_START}</cleanHistoryOnStart> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> </filter> </appender> <!-- 生成 error html格式日志开始 --> <appender name="HTML" class="ch.qos.logback.core.FileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!--设置日志级别,过滤掉info日志,只输入error日志--> <level>ERROR</level> </filter> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>%p%d%msg%M%F{32}%L</pattern> </layout> </encoder> <file>${LOG_HOME}/${APP_NAME}-error-log.html</file> </appender> <!-- 生成 error html格式日志结束 --> <!-- 每天生成一个html格式的日志开始 --> <appender name="FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日志文件输出的文件名 --> <FileNamePattern>${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}.%i.html</FileNamePattern> <!--日志文件保留天数 --> <MaxHistory>${LOG_FILEMAXDAY}</MaxHistory> <MaxFileSize>10MB</MaxFileSize> <cleanHistoryOnStart>${CLEAR_LOG_ON_START}</cleanHistoryOnStart> </rollingPolicy> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>%p%d%msg%M%F{32}%L</pattern> </layout> </encoder> </appender> <!-- 每天生成一个html格式的日志结束 --> <!--myibatis log configure --> <logger name="com.apache.ibatis" level="INFO"/> <logger name="java.sql.Connection" level="INFO"/> <logger name="java.sql.Statement" level="INFO"/> <logger name="java.sql.PreparedStatement" level="INFO"/> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FileAppender"/> <appender-ref ref="HTML"/> <appender-ref ref="FILE_HTML"/> </root> </configuration>