日志
记录日志
在程序开发过程中,需要定义一个 Logger 类型的属性 log,用于记录日志:
1 | private static final Logger log = LoggerFactory.getLogger(Xxx.class); |
@Slf4j 注解
lombok 提供了 @Slf4j 注解,可以简化开发。在类上声明 @Slf4j 注解,可以自动生成一个 Logger 类型的属性 log。
日志格式
在配置文件中,使用 logging.pattern.console 设置日志格式。
输出日志
日志输出级别
日志级别分为六个等级:
- trace:运行时的堆栈信息。
- debug:测试的 Debug 信息。
- info:记录运行过程中的数据。
- warn:运行过程中的告警数据。
- error:错误信息。
- fatal:灾难信息,与 error 合并。
可以使用 Spring Boot 的配置文件,设置日志的输出级别。可以为根、包、日志组设置日志输出级别。
1 | logging: |
日志文件
使用配置文件中的 logging.file 属性,可以定义日志文件的配置信息。
如果使用 logback 作为日志工具,使用 logging.logback.rollingpolicy 属性,可以设置滚动滚动属性。
热部署
通过引入 spring-boot-devtools,来实现应用程序的热部署。
重启 vs 重载
Spring Boot 通过两个类加载器实现了重启:
- base classloader:不变的类(例如,来自第三方jar的类)被加载到一个 base classloader。
- restart classloader:正在开发的类被加载到 restart classloader中。
当应用程序被重新启动时, restart classloader 被丢弃,并被创建一个新的。 这种方法意味着应用程序的重启通常比冷启动快得多,因为 base classloader 已经可用并被加载。
排除资源
默认情况下,改变以下资源不会触发应用程序重启:
- /META-INF/maven
- /META-INF/resource
- resources
- static
- public
- templates
以上资源不会触发重启,但是会触发实时重载。
spring-boot-devtools 模块包括一个内嵌的 LiveReload 服务器,可以用来在资源发生变化时触发浏览器刷新。
使用 spring.devtools.restart.exclude 属性或者 spring.devtools.restart.extra-exclude 属性(添加额外的排除资源),可以定义排除的资源。
禁止重启
如果你想使用重启功能,可以通过使用 spring.devtools.restart.enabled 属性来禁用它。在大多数情况下,可以在 application.properties 中设置这个属性(这样做仍然会初始化 restart 类加载器,但它不会监控文件变化)。
如果要完全禁用重启支持(例如,因为它不能与特定的库一起工作),需要在调用 SpringApplication.run(…) 之前将 spring.devtools.restart.enabled 属性设置为 false。
1 | import org.springframework.boot.SpringApplication; |