1、指定配置文件
Springboot默认采用的日志框架就是logback,因此在Springboot项目中,可以直接引用,Logback的配置文件通常是
logback-spring.xml
,通常放在src/main/resources目录下,默认无需指定,但名称要一致。也可以自己指定文件地址和名称,如:
# ----------------日志文件配置---------------
## 设置日志配置文件
logging.config=classpath:logback/logback-dev.xml
2、配置文件
在Springboot中使用这套配置文件基本上可以满足大部分场景需求,并且可以根据情况自行调整。
<?xml version="1.0" encoding="UTF-8"?>
<!--
scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
-->
<configuration>
<!-- ==============================================公共配置============================================== -->
<!-- 设置项目名称 -->
<property name="myProjectName" value="qfxSpringbootLogbackDemo"/>
<!-- 设置日志文件的目录名称 -->
<property name="logFileName" value="${myProjectName}_dev_log"/>
<!-- 设置日志文件的基础路径 -->
<property name="basePath" value="d:/logs/${logFileName}"/>
<!-- 格式化文件日志输出格式(无颜色):%d{yyyy-MM-dd HH:mm:ss.SSS}: 日志记录的时间戳;[%thread]: 记录日志的线程名称;%-5level: 日志级别,左对齐,宽度为5个字符;%logger{39}: 类名称,截取最后39个字符;%msg: 日志消息;%n: 换行符 -->
<!-- <property name="fileLogPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{39} - %msg%n"/> -->
<!-- 格式化文件日志输出格式(彩色):%d{yyyy-MM-dd HH:mm:ss.SSS}: 日志记录的时间戳;%-5level: 日志级别,左对齐,宽度为 5 个字符;%-40.40logger{39}: 类名称,左对齐并占用40个字符宽度,截取最后39个字符;%msg: 日志消息;%n: 换行符 -->
<property name="fileLogPattern" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([%-5level]) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n}"/>
<!-- 单个日志文件的最大大小 -->
<property name="everyFileSize" value="100MB"/>
<!-- 日志保留最大天数 -->
<property name="saveHistoryDay" value="180"/>
<!-- 全部级别 日志默认存放路径 -->
<property name="rolling_fileName" value="${basePath}/all.log"/>
<!-- 全部级别 日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
<property name="rolling_filePattern" value="${basePath}/%d{yyyy-MM}/all-%d{yyyy-MM-dd-HH}-%i.log.gz"/>
<!-- INFO级别 日志默认存放路径 -->
<property name="info_fileName" value="${basePath}/Info.log"/>
<!-- INFO级别 日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
<property name="info_filePattern" value="${basePath}/%d{yyyy-MM}/Info-%d{yyyy-MM-dd-HH}-%i.log.gz"/>
<!-- WARN级别 日志默认存放路径 -->
<property name="warn_fileName" value="${basePath}/Warn.log"/>
<!-- WARN级别 日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
<property name="warn_filePattern" value="${basePath}/%d{yyyy-MM}/Warn-%d{yyyy-MM-dd-HH}-%i.log.gz"/>
<!-- INFO级别 日志默认存放路径 -->
<property name="error_fileName" value="${basePath}/Error.log"/>
<!-- INFO级别日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
<property name="error_filePattern" value="${basePath}/%d{yyyy-MM}/Error-%d{yyyy-MM-dd-HH}-%i.log.gz"/>
<!-- 引入spirng boot默认的logback配置文件(主要用他来输出彩色的控制台) -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 定义日志输出级别 -->
<property name="outputLogLevel" value="INFO"/>
<!-- 定义控制台输出的日志级别 -->
<property name="console_print_level" value="DEBUG"/>
<!-- ============================================控制台显示控制============================================ -->
<!-- 定义控制台输出的 appender -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>${console_print_level}</level> <!-- 设置控制台输出的最低日志级别 -->
</filter>
<encoder>
<!-- 设置控制台日志输出格式:默认格式输出,使用彩色面板 -->
<!-- <pattern>${CONSOLE_LOG_PATTERN}</pattern> -->
<!-- 设置控制台日志输出格式:自定义格式输出,使用彩色面板 -->
<pattern>${fileLogPattern}</pattern>
</encoder>
</appender>
<!-- ===========================================文件日志输出配置=========================================== -->
<!-- 打印root中指定的level级别以上的日志到文件 -->
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 指定日志文件的初始输出路径和文件名 -->
<file>${rolling_fileName}</file>
<!-- 指定滚动策略为 SizeAndTimeBasedRollingPolicy,标识日志文件会根据时间和大小进行滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 指定滚动后的日志文件命名模式 -->
<fileNamePattern>${rolling_filePattern}</fileNamePattern>
<!-- 指定每个日志文件的最大大小,当文件大小达到 10MB 时,会生成新的日志文件 -->
<maxFileSize>${everyFileSize}</maxFileSize>
<!-- 指定保留的日志文件的最大天数,超过 90 天的旧日志文件会被自动删除 -->
<maxHistory>${saveHistoryDay}</maxHistory>
</rollingPolicy>
<!-- 指定日志的输出格式 -->
<encoder>
<pattern>${fileLogPattern}</pattern>
</encoder>
</appender>
<!-- 打印INFO级别的日志到文件 -->
<appender name="InfoFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 指定日志文件的初始输出路径和文件名 -->
<file>${info_fileName}</file>
<!-- 指定滚动策略为 SizeAndTimeBasedRollingPolicy,标识日志文件会根据时间和大小进行滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 指定滚动后的日志文件命名模式 -->
<fileNamePattern>${info_filePattern}</fileNamePattern>
<!-- 指定每个日志文件的最大大小,当文件大小达到 10MB 时,会生成新的日志文件 -->
<maxFileSize>${everyFileSize}</maxFileSize>
<!-- 指定保留的日志文件的最大天数,超过 90 天的旧日志文件会被自动删除 -->
<maxHistory>${saveHistoryDay}</maxHistory>
</rollingPolicy>
<!-- 指定日志的输出格式 -->
<encoder>
<pattern>${fileLogPattern}</pattern>
</encoder>
<!-- 添加过滤器,仅记录 INFO 级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level> <!--设置过滤器的级别为 INFO-->
<onMatch>ACCEPT</onMatch> <!--当日志级别匹配 level 时,接受该日志-->
<onMismatch>DENY</onMismatch> <!--当日志级别不匹配 level 时,拒绝该日志-->
</filter>
</appender>
<!-- 打印WARN级别的日志到文件 -->
<appender name="WarnFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 指定日志文件的初始输出路径和文件名 -->
<file>${warn_fileName}</file>
<!-- 指定滚动策略为 SizeAndTimeBasedRollingPolicy,标识日志文件会根据时间和大小进行滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 指定滚动后的日志文件命名模式 -->
<fileNamePattern>${warn_filePattern}</fileNamePattern>
<!-- 指定每个日志文件的最大大小,当文件大小达到 10MB 时,会生成新的日志文件 -->
<maxFileSize>${everyFileSize}</maxFileSize>
<!-- 指定保留的日志文件的最大天数,超过 90 天的旧日志文件会被自动删除 -->
<maxHistory>${saveHistoryDay}</maxHistory>
</rollingPolicy>
<!-- 指定日志的输出格式 -->
<encoder>
<pattern>${fileLogPattern}</pattern>
</encoder>
<!-- 添加过滤器,仅记录 WARN 级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level> <!--设置过滤器的级别为 WARN-->
<onMatch>ACCEPT</onMatch> <!--当日志级别匹配 level 时,接受该日志-->
<onMismatch>DENY</onMismatch> <!--当日志级别不匹配 level 时,拒绝该日志-->
</filter>
</appender>
<!-- 打印ERROR级别的日志到文件 -->
<appender name="ErrorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 指定日志文件的初始输出路径和文件名 -->
<file>${error_fileName}</file>
<!-- 指定滚动策略为 SizeAndTimeBasedRollingPolicy,标识日志文件会根据时间和大小进行滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 指定滚动后的日志文件命名模式 -->
<fileNamePattern>${error_filePattern}</fileNamePattern>
<!-- 指定每个日志文件的最大大小,当文件大小达到 10MB 时,会生成新的日志文件 -->
<maxFileSize>${everyFileSize}</maxFileSize>
<!-- 指定保留的日志文件的最大天数,超过 90 天的旧日志文件会被自动删除 -->
<maxHistory>${saveHistoryDay}</maxHistory>
</rollingPolicy>
<!-- 指定日志的输出格式 -->
<encoder>
<pattern>${fileLogPattern}</pattern>
</encoder>
<!-- 添加过滤器,仅记录 ERROR 级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <!--设置过滤器的级别为 ERROR-->
<onMatch>ACCEPT</onMatch> <!--当日志级别匹配 level 时,接受该日志-->
<onMismatch>DENY</onMismatch> <!--当日志级别不匹配 level 时,拒绝该日志-->
</filter>
</appender>
<!-- ===========================================定义logger规则=========================================== -->
<!-- 设置com.linghu.base包下的日志在控制台和文件输出时,打印DEBUG及以上级别的日志(不受全局日志输出级别output_log_level的影响) -->
<logger name="com.qfx" level="DEBUG" additivity="false">
<appender-ref ref="Console"/> <!-- 控制台输出 -->
<appender-ref ref="InfoFile"/> <!-- 文件输出(INFO级别日志) -->
<appender-ref ref="WarnFile"/> <!-- 文件输出(WARN级别日志) -->
<appender-ref ref="ErrorFile"/> <!-- 文件输出(ERROR级别日志) -->
<appender-ref ref="RollingFile"/> <!-- 文件输出(所有级别日志) -->
</logger>
<!-- ===========================================定义日志配置的根节点=========================================== -->
<!-- root 标签是必须存在的,并且必须放在最后配置. 用来指定最基础的日志输出级别 -->
<root level="${outputLogLevel}">
<appender-ref ref="Console"/> <!-- 将日志输出到控制台 -->
<appender-ref ref="InfoFile"/> <!-- 将日志输出到INFO级别日志的滚动文件 -->
<appender-ref ref="WarnFile"/> <!-- 将日志输出到WARN级别日志的滚动文件 -->
<appender-ref ref="ErrorFile"/> <!-- 将日志输出到ERROR级别日志的滚动文件 -->
<appender-ref ref="RollingFile"/> <!-- 将日志输出到所有级别日志的滚动文件 -->
</root>
</configuration>
3、个性化设置
这是几个需要根据自己项目情况建议自行更改的配置
3.1 项目基本信息
<!-- 设置项目名称 -->
<property name="myProjectName" value="qfxSpringbootLogbackDemo"/>
<!-- 设置日志文件的目录名称 -->
<property name="logFileName" value="${myProjectName}_dev_log"/>
<!-- 设置日志文件的基础路径 -->
<property name="basePath" value="d:/logs/${logFileName}"/>
3.2 定义日志级别
<!-- 定义日志输出级别 -->
<property name="outputLogLevel" value="INFO"/>
<!-- 定义控制台输出的日志级别 -->
<property name="console_print_level" value="DEBUG"/>
3.3 自定义指定包的日志级别
可设置多个
<!-- 设置com.linghu.base包下的日志在控制台和文件输出时,打印DEBUG及以上级别的日志(不受全局日志输出级别output_log_level的影响) -->
<logger name="com.qfx" level="DEBUG" additivity="false">
<appender-ref ref="Console"/> <!-- 控制台输出 -->
<appender-ref ref="InfoFile"/> <!-- 文件输出(INFO级别日志) -->
<appender-ref ref="WarnFile"/> <!-- 文件输出(WARN级别日志) -->
<appender-ref ref="ErrorFile"/> <!-- 文件输出(ERROR级别日志) -->
<appender-ref ref="RollingFile"/> <!-- 文件输出(所有级别日志) -->
</logger>