15.<Spring Boot 日志>
Spring Boot 日志配置
Spring Boot 默认使用 Logback 作为日志框架,同时支持 Log4j2 和 Java Util Logging。日志配置通常通过 application.properties 或 application.yml 文件实现。
配置日志级别
logging.level.root=WARN
logging.level.com.example=DEBUG
root 设置全局日志级别,com.example 设置特定包的日志级别。
输出日志到文件
logging.file.name=app.log
logging.file.path=/var/log
logging.file.name 指定文件名,logging.file.path 指定目录路径。
自定义日志配置
如果需要更复杂的配置,可以替换默认的日志配置文件。
Logback 配置
创建 logback-spring.xml 文件并放置在 src/main/resources 目录下:
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="STDOUT" /></root>
</configuration>
使用 Log4j2
如果需要使用 Log4j2 替代 Logback,需排除默认的 Logback 依赖并添加 Log4j2 依赖。
Maven 配置
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
Log4j2 配置
创建 log4j2-spring.xml 文件:
<Configuration><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console" /></Root></Loggers>
</Configuration>
日志注解使用
Spring Boot 支持使用 Lombok 的 @Slf4j 注解简化日志记录代码。
Lombok 配置
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>
示例代码
@Slf4j
@RestController
public class ExampleController {@GetMapping("/example")public String example() {log.info("Example log message");log.error("Error log message");return "Hello";}
}
日志分组
Spring Boot 允许将相关的日志记录器分组,便于统一管理。
配置文件示例
logging.group.web=org.springframework.core.codec, org.springframework.http
logging.level.web=DEBUG
web 是自定义的组名,包含两个包路径,统一设置日志级别为 DEBUG。
日志输出格式
可以自定义控制台和文件的日志输出格式。
控制台日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
文件日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
