一、springboot的默认日志
默认情况下,Spring Boot会用Logback来记录日志,并用info级别输出到控制台,也就是说正常情况下启动springboot的XXXApplication类,控制台所看到的日志,即为Logback的info级别日志。
二、使用默认日志Logback进行日志配置
1. 是否添加依赖
首先明确一点,既然是默认日志,那么说明是不需要添加额外依赖的,是属于springboot自带的配置项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
是属于spring-boot-starter中内置的spring-boot-starter-logging,所以当你创建了springboot项目时,已经默认开启了logback日志,接下来是要对日志的配置进行自定义。
3.日志级别
日志级别从低到高包括:TRACE、DEBUG、INFO、WARN、ERROR。
2.日志自定义
首先,springboot管理推荐以-spring为文件名作为日志配置文件,来更好的控制日志系统的初始化,以下是原文:
If you want to use a custom name for your logging configuration file,
you can specify it by using the logging.config property. However,
if you use the -spring variant for your configuration file
(for example, logback-spring.xml rather than logback.xml),
Spring Boot will be able to fully control the initialization of the logging system.
那么以一个logback-spring.xml的配置文件为例,重点配置如下:
<configuration scan="true" scanPeriod="10 seconds">
定义启用配置文件动态扫描功能,扫描时间为10S,实现不需要重启应用即可加载修改后的logback配置文件,但是生产环境建议不要开启,或者加长扫描时间间隔
<contextName>logback</contextName>
<property name="log.path" value="/out"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>-->
appender 标签用于定义日志的输出目的地和输出格式。它是 Logback 日志框架的核心组件之一,负责将日志事件(如日志消息)发送到指定的目标(如控制台、文件、数据库等)。引入的class中的ConsoleAppender是将日志输出到控制台
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
定义日志格式:
%d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger{50}——日志输出者的名字
%msg——日志消息
%n——平台的换行符
配置后的示例如下:
2025-03-12 10:24:22.278 [main] INFO c.g.c.h.m.MeteorologyPowerDataApplication - Started MeteorologyPowerDataApplication in 1.737 seconds (JVM running for 2.07)
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/meteorology-power-server.log</file>
<!--日志文档输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 设置字符集 -->
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/back/meteorology-power-server-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
引入的class中的RollingFileAppender将日志输出到文件,并支持日志文件的滚动(如按大小或时间分割日志文件)
<root level="info">
<appender-ref ref="CONSOLE" />
<!-- <appender-ref ref="DEBUG_FILE" />-->
<appender-ref ref="INFO_FILE" />
</root>
</configuration>
root标签用于配置 根日志记录器(Root Logger)。根日志记录器是所有日志记录器的父节点,它的配置会作用于整个应用程序中的所有日志记录器(除非某个日志记录器显式覆盖了配置)