Spring Boot使用Commons Logging
进行所有内部日志记录,也为Java Util Logging
,Log4J2
和Logback
提供了默认配置。在每种情况下,日志都预先配置为使用控制台输出,并提供可选的文件输出。
默认情况下,如果您使用“Starters”
,则使用Logback进行日志记录。还包括适当的Logback路由,以确保使用Java Util Logging
,Commons Logging
,Log4J
或SLF4J
的依赖库全部正常工作。
常用的日志框架
Log4j
:Log4j是apache下一个功能非常丰富的java日志库实现,功能非常强大,通过Log4j可以把日志输出到控制台、文件、用户界面。也可以输出到操作系统的事件记录器和一些系统常驻进程。Log4j还允许非常便捷地自定义日志格式和日志等级,可以帮助开发人员全方位的掌控自己的日志信息。Log4j2
:Log4j2是Log4j1的升级版本,基于Log4j做了很多优化和改变。Logback
:Logback是由Log4j创始人设计的另一个开源日志组件,也是作为Log4j的替代者出现的。而且官方是建议和Slf4j一起使用。Logback是在Log4j的基础上做的改进版本,而Slf4j又是同一个人设计的,所以默认就对Slf4j无缝结合。Java Util Logging
:提供Java平台核心日志记录工具的类和接口。
两个比较广泛的统一日志规范接口:
SLF4j
:SLF4j(Simple Logging Facade For Java)是基于API的java日志框架,SLF4j提供了一个简单统一的日志记录接口,开发者在配置和部署时,只需要实现这个接口就可以实现日志功能。Commons-Logging
:Common-logging 为众多具体的日志实现库提供了一个统一的接口,和SLF4j的作用类似,它允许在运行时绑定任意的日志库。
默认日志格式
Spring Boot的默认日志输出类似于以下格式:
1 | 2018-06-04 21:02:18.158 INFO 4584 --- [ main] c.skh.springboot.SpringbootApplication : Starting SpringbootApplication on U51SU5XW3L4M04W with PID 4584 (E:\ideaProject\springboot\springsecurity\target\classes started by Administrator in E:\ideaProject\springboot) |
其中:
时间日期 — 精确到毫秒
日志级别 — ERROR, WARN, INFO, DEBUG or TRACE
进程ID
分隔符 —
---
标识实际日志的开始线程名 — 方括号括起来(可能会截断控制台输出)
Logger名 — 通常使用源代码的类名
日志内容
文件输出
默认情况下,Spring Boot仅记录到控制台,不写入日志文件。如果除了控制台输出之外还想写日志文件,则需要设置logging.file
或logging.path
属性(例如,在application.properties中)。
下表展示如何组合使用 logging.*
:
logging.file | logging.path | 示例 | 描述 |
---|---|---|---|
(none) | (none) | 只记录到控制台 | |
Specific file | (none) | my.log | 写入指定的日志文件。名称可以是确切的位置或相对于当前目录。 |
(none) | Specific directory | /var/log | 写到特定目录下的 spring.log 里,名称可以是精确的位置或相对于当前目录。 |
日志文件每达到10M就会被分割,跟控制台一样,默认记录 ERROR ,WARN 和 INFO 级别的信息。可以使用logging.file.max-size
属性更改大小限制。除非已设置logging.file.max-history
属性,否则之前旋转的文件将无限期地归档。
日志级别
所有Spring Boot支持的日志系统都可以在Spring Environment 中设置级别(application.properties 里也一样),设置格式为'logging.level.*=LEVEL'
,其中 LEVEL 是 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF 之一。以下是application.properties
示例:
1 | logging.level.root=WARN |
Logback简单使用
Spring Boot包含很多有用的Logback扩展,你可以在logback-spring.xml
配置文件中使用它们。
1 | <?xml version="1.0" encoding="UTF-8"?> |