Spring Boot的起步依赖(如spring-boot-starter-web)中已经包含了Slf4j的依赖,无需额外添加。:
org.springframework.boot
spring-boot-starter-web
当你在项目中添加了spring-boot-starter-web
依赖后,它将自动引入以下关键组件和依赖项:
通过添加spring-boot-starter-web
依赖,你可以方便地构建和开发基于Spring Boot的Web应用程序。它提供了必要的组件和配置,使你能够处理HTTP请求、定义控制器、处理表单提交、返回JSON或HTML响应等。
spring-boot-starter-web
依赖中已经集成了日志框架。在Spring Boot中,默认使用的是SLF4J(Simple Logging Facade for Java)作为日志抽象层,并且使用Logback作为默认的日志实现。
SLF4J是一个日志抽象层,它提供了统一的日志接口,可以与多个具体的日志实现框架进行集成。而Logback是SLF4J的一个实现,它提供了强大的日志功能和灵活的配置选项。
当你添加了spring-boot-starter-web
依赖后,它会自动引入spring-boot-starter-logging
依赖,该依赖会将SLF4J和Logback集成到你的项目中。这意味着你可以直接在代码中使用SLF4J的API进行日志记录,而无需额外的配置。
在项目中添加 logback-spring.xml 文件,如下所示:
logback
debug
${CONSOLE_LOG_PATTERN}
UTF-8
${log.path}/web_debug.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log
100MB
30
debug
ACCEPT
DENY
${log.path}/web_info.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${log.path}/web-info-%d{yyyy-MM-dd}.%i.log
100MB
15
info
ACCEPT
DENY
${log.path}/web_warn.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log
100MB
5
warn
ACCEPT
DENY
${log.path}/web_error.log
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
UTF-8
${log.path}/web-error-%d{yyyy-MM-dd}.%i.log
100MB
30
ERROR
ACCEPT
DENY
在业务代码中对需要加日志的类添加注解 @Slf4j
在具体需要加日志的地方,按需使用如下语句,等级依次是从低到高
//日志等级为 debug
log.debug("我的测试接口,参数为: {}",params);
//日志等级为 info
log.info("我的测试接口,参数为: {}",params);
//日志等级为warn
log.warn("我的测试接口,参数为: {}",params);
//日志等级为error
log.error("我的测试接口,参数为: {}",params);
配置文件不论是使用 bootstrap.yml 还是application.yml,均需要指定环境,需和 logback-spring.xml 中 springProfile 配置的name匹配,会选择指定的日志等级
...
spring:
profiles:
active: dev
在Spring Cloud项目中,bootstrap.yml
的优先级比application.yml
更高。
bootstrap.yml
是在Spring应用程序启动的早期加载的配置文件,它用于进行系统级别的配置,例如连接到配置服务器、配置加密等。它在应用程序上下文被创建之前加载,因此可以在应用程序的早期阶段使用它来配置一些必要的属性。
相比之下,application.yml
是应用程序级别的配置文件,用于配置应用程序的具体行为和属性。
由于bootstrap.yml
在应用程序上下文创建之前加载,它的配置会覆盖application.yml
中相同属性的配置。这使得bootstrap.yml
可以用于设置一些全局的配置,而application.yml
则用于设置应用程序特定的配置。
因此,如果bootstrap.yml
和application.yml
中存在相同的属性配置,bootstrap.yml
中的配置将覆盖application.yml
中的配置。这样可以确保系统级别的配置优先于应用程序级别的配置。
故如果在 bootstrap.yml 中指定了环境,但是没找到配置文件,然后加载了application.yml 配置文件内容,环境会以 bootstrap.yml 为准。如果环境和 springProfile 不匹配会出现日志无法输出到日志文件的情况。