Spring Boot 日志配置文件示例
logback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 seconds">
<!-- 定义日至文件名称 -->
<springProperty scope="context" name="APP_HOME" source="spring.application.name" defaultValue="temp"/>
<!-- 定义日志的根目录 -->
<!-- windows -->
<springProfile name="dev">
<property name="LOG_PATH" value="D:\\logs\\${APP_HOME}"/>
<!-- 根据日志级别分离日志,分别输出到不同的文件 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!--<onMatch>DENY</onMatch>-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<!-- 当天错误日志保存路径 -->
<File>${LOG_PATH}/info.log</File>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<!-- 设置日志格式 -->
<encoder>
<!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
[ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %.-60logger{60} [%line]: %msg%n
</pattern>
<!--<charset>UTF-8</charset>-->
</encoder>
</appender>
<!-- 输出错误日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<!-- 当天错误日志保存路径 -->
<File>${LOG_PATH}/error.log</File>
<append>true</append>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<!-- 设置日志格式 -->
<encoder>
<!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
[ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %.-60logger{60} [%line]: %msg%n
</pattern>
<!-- <charset>UTF-8</charset> -->
</encoder>
</appender>
</springProfile>
<!-- linux -->
<springProfile name="test">
<property name="LOG_PATH" value="/opt/logs/${APP_HOME}"/>
<!-- 根据日志级别分离日志,分别输出到不同的文件 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!--<onMatch>DENY</onMatch>-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<!-- 当天错误日志保存路径 -->
<File>${LOG_PATH}/info.log</File>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<!-- 设置日志格式 -->
<encoder>
<pattern>
[ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %.-60logger{60} [%line]: %msg%n
</pattern>
</encoder>
</appender>
<!-- 输出错误日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<!-- 当天错误日志保存路径 -->
<File>${LOG_PATH}/error.log</File>
<append>true</append>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志最大的历史 60天 -->
<maxHistory>2</maxHistory>
</rollingPolicy>
<!-- 设置日志格式 -->
<encoder>
<pattern>
[ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %.-60logger{60} [%line]: %msg%n
</pattern>
<!-- <charset>UTF-8</charset> -->
</encoder>
</appender>
</springProfile>
<!-- Console output,控制台输出 -->
<appender name="CONSOLE_LOG" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder>
<pattern>%highlight([%-5level]) %magenta([%date{yyyy-MM-dd HH:mm:ss}]) %cyan(%40.-40logger{40})
%highlight([%line]) - (%-15file:%line\): %msg%n
</pattern>
</encoder>
</appender>
<!-- 文件保存设置 -->
<!-- 开发环境日志级别为DEBUG -->
<springProfile name="dev">
<root level="INFO"><!-- DEBUG -->
<appender-ref ref="CONSOLE_LOG"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
<!-- 测试环境日志级别为WARN -->
<springProfile name="test">
<root level="INFO">
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</springProfile>
</configuration>