Spring Boot 日志
Spring Boot 内部所有的日志记录都是通过使用 Commons Logging 实现,同时默认配置也提供了 Java Util Logging、Log4J、Log4J2、Logback 的支持。每种日志都预配置可以使用控制台输出和文件输出。
Spring Boot 日志由启动器spring-boot-starter-logging
来解决:
|
|
你不必显式的声明此依赖。默认情况下,Spring Boot 使用 Logback 进行日志记录。
1. 日志级别
在 Spring Boot 中,通过logging.level.*=TRACE/DEBUG/INFO/WARN/ERROR/FATAL/OFF
来设置日志的级别。*
可以是根级别(root
)也可以是包级别。
application.properties 配置示例:
|
|
application.yml 配置示例:
|
|
2. 文件输出
默认情况下,Spring Boot 只将日志信息显示到控制台。如果你想要将日志信息输出到外部文件,你可以使用logging.file
或logging.path
属性来配置。日志文件大小达到 10M 时,将产生一个新的文件。
- 使用
logging.file
可以设置日志输出的文件- 文件相对路径(相对项目的根目录):
logfile.log
或logs/logfile.log
- 文件绝对路径:
/pathname/logfile.log
- 文件相对路径(相对项目的根目录):
application.properties 配置示例:
|
|
application.yml 配置示例:
|
|
- 使用
logging.path
可以设置日志输出的目录,spring.log
日志文件将输出到该目录- 目录相对路径(相对项目的根目录):
logs
或pathname/logs
- 目录绝对路径:
/pathname/logs
- 目录相对路径(相对项目的根目录):
application.properties 配置示例:
|
|
application.yml 配置示例:
|
|
3. 日志格式
Spring Boot 默认输出的日志信息格式:
|
|
它由以下几个部分组成:
- 精确到毫秒的日期和时间
- 日志级别(
TRACE<br>DEBUG<br>INFO<br>WARN<br>ERROR
) - 进程 ID
- 分隔符
---
- 线程名称,包裹在
[]
中 - 日志名称,通常是类的完全限定路径的简写
- 分隔符
:
- 日志消息
使用logging.pattern.console
(只支持logback
)可以自定义控制台日志输出格式。
application.properties 配置示例:
|
|
application.yml 配置示例:
|
|
使用logging.pattern.file
(只支持logback
)可以自定义文件的日志输出格式。
application.properties 配置示例:
|
|
application.yml 配置示例:
|
|
常用的日志信息格式化参数:
参数 | 描述 |
---|---|
%c{length} %logger{length} |
输出所属的类目,通常就是所在类的全名 |
%d{pattern} %date{pattern} |
输出日志的日期或时间 |
%F %file |
输出发出日志记录请求的Java源文件的文件名 |
%L %line |
输出日志事件的发生行号信息 |
%m %msg %message |
输出程序代码中指定的消息 |
%p %le %level |
输出日志级别信息 |
%t %thread |
输出产生该日志事件的线程名 |
%n | 输出一个平台的回车换行符 |
其中 %logger{length}
,如果信息长度大于给定的 length 的值,保留最右边的单词,左边的每个单词只保留第一个字符。
示例 | 信息 | 结果 |
---|---|---|
%logger | org.fanlychie.DemoService | org.fanlychie.DemoService |
%logger{0} | org.fanlychie.DemoService | DemoService |
%logger{10} | org.fanlychie.DemoService | o.f.DemoService |
%logger{24} | org.fanlychie.DemoService | o.fanlychie.DemoService |
%logger{100} | org.fanlychie.DemoService | org.fanlychie.DemoService |
日志信息宽度和对齐方式控制,以%logger
为例:
示例 | 描述 |
---|---|
%50logger | 右对齐,最小的宽度是50,长度不足50则左补空格,长度超出50则原样输出 |
%-50logger | ‘-‘表示向左对齐,最小的宽度是50,长度不足50则右补空格,长度超出50则原样输出 |
%.20logger | 左对齐,最大的宽度是20,如果长度超出20,将左边多出的字符直接丢掉 |
%30.50logger | 最小宽度是30,如果长度不足30则左补空格右对齐;如果长度超出30且不足50则左对齐;如果长度超出50则将左边多出的字符直接丢掉 |
4. 扩展 logback
Spring Boot 允许我们通过扩展 Logback 进行更高级的配置。在类路径下创建logback-sprng.xml
:
|
|
4.1 配置文件的加载
Spring Boot 默认从系统类路径加载的日志配置文件:
logback-spring.xml
logback-spring.groovy
logback.xml
logback.groovy
单元测试的 DEBUG 日志可以在src/test/resources/logback-test.xml
中配置控制。
5. 多环境日志配置
使用<springProfile>
标签可以定义不同 profile 环境的配置:
|
|
application.properties 配置示例:
|
|
application.yml 配置示例:
|
|
示例项目开发环境:Java-8、Maven-3、IntelliJ IDEA-2017、Spring Boot-1.5.2.RELEASE
完整示例项目链接:spring-boot-logging-sample
参考文档文献链接:logback-doc、spring-boot-logging