<?xml version="1.0" encoding="utf-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 定义变量后,可以使“${}”来使用变量 source来源为spring 上下文信息 --> <springProperty scope="context" name="springApplicationName" source="spring.application.name"/> <springProperty scope="context" name="serverPort" source="server.port"/> <springProperty scope="context" name="logFilePath" source="application.log.path" defaultValue="/mortals/app/logs" /> <springProperty scope="context" name="logLevel" source="application.log.level" defaultValue="INFO" /> <!-- appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略 --> <!-- 控制台输出策略--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%X{traceId}] [%thread] [%.50c\(%L\)] - %msg%n</pattern> </encoder> </appender> <!-- 文件输出策略--> <appender name="fileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%X{traceId}] [%thread] [%.50c\(%L\)] - %msg%n</pattern> </encoder> <file>${logFilePath}/${springApplicationName:-default}/${springApplicationName:-default}-info.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 文件保存策略--> <fileNamePattern>${logFilePath}/${springApplicationName:-default}/${springApplicationName:-default}-info.log.%d{yyyyMMdd}</fileNamePattern> <cleanHistoryOnStart>true</cleanHistoryOnStart> <!--日志文件保留天数--> <MaxHistory>7</MaxHistory> </rollingPolicy> </appender> <!-- 异常文件输出策略--> <appender name="fileError" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%X{traceId}] [%thread] [%.50c\(%L\)] - %msg%n</pattern> </encoder> <file>${logFilePath}/${springApplicationName:-default}/${springApplicationName:-default}-error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logFilePath}/${springApplicationName:-default}/${springApplicationName:-default}-error.log.%d{yyyyMMdd}</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>7</MaxHistory> </rollingPolicy> </appender> <root level="${logLevel}"> <appender-ref ref="console"/> <appender-ref ref="fileInfo"/> <appender-ref ref="fileError"/> </root> <!--TRACE < DEBUG < INFO < WARN < ERROR < FATAL --> <!--用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<logger>仅有一个name属性,一个可选的level和一个可选的additivity属性。--> <!-- name 用来指定受此loger约束的某一个包或者具体的某一个类--> <!-- level 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别--> <!-- additivity 是否向上级logger传递打印信息。默认是true。false:表示只用当前logger的appender-ref。true:表示当前logger的appender-ref和rootLogger的appender-ref都有效。--> <logger name="com.mortals" level="${logLevel}" additivity="false"> <appender-ref ref="console"/> <appender-ref ref="fileInfo"/> <appender-ref ref="fileError"/> </logger> <logger name="com.mortals.xhx.module" level="${logLevel}" additivity="false"> <appender-ref ref="console"/> <appender-ref ref="fileInfo"/> <appender-ref ref="fileError"/> </logger> <logger name="com.mortals.xhx.module"> <level value="debug"/> </logger> </configuration>