Spring Boot 在所有内部日志中使用 Commons Logging,但是默认配置也提供了对常用日志的支持
1 格式化日志
2016-04-13 08:23:50.120 INFO 37397 --- [main] org.hibernate.Version: HHH000412: Hibernate Core {4.3.11.Final}
- 时间日期 — 精确到毫秒
- 日志级别 — ERROR, WARN, INFO, DEBUG or TRACE
- 进程ID
- 分隔符 —
---
标识实际日志的开始 - 线程名 — 方括号括起来(可能会截断控制台输出)
- Logger 名 — 通常使用源代码的类名
- 日志内容
2 控制台输出
切换级别
- 运行命令
在运行命令后加入--级别
标志,如:$ java -jar myapp.jar --debug
- 配置文件
在 application.properties 中配置debug=true
多彩输出
在 application.properties 中设置spring.output.ansi.enabled
参数来支持多彩输出
- NEVER:禁用 ANSI-colored 输出(默认项)
- DETECT:会检查终端是否支持 ANSI,是的话就采用彩色输出(推荐项)
- ALWAYS:总是使用 ANSI-colored 格式输出,若终端不支持的时候,会有很多干扰信息,不推荐使用
3 文件输出
3.1 文件路径
在 application.properties 中配置logging.file
或logging.path
属性
- logging.file
设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log - logging.path
设置目录,会在该目录下创建 spring.log 文件,并写入日志内容,如:logging.path=/var/log
日志文件会在 10Mb 大小的时候被截断,产生新的日志文件,默认级别为:ERROR、WARN、INFO
3.2 级别控制
在 application.properties 中进行配置logging.level.*=LEVEL
- logging.level:日志级别控制前缀,
*
为包名或 Logger 名 - LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
logging.level.com.didispace=DEBUG//com.didispace包下所有class以DEBUG级别输出
logging.level.root=WARN//root日志以WARN级别输出
4 自定义日志配置
日志服务一般在 ApplicationContext 创建前就初始化了,并不是必须通过 Spring 的配置文件控制。因此通过系统属性和传统的 Spring Boot 外部配置文件依然可以很好的支持日志控制和管理。
- Logback:logback-spring.xml, logback-spring.groovy。 https://www.jianshu.com/p/f67c721eea1b
- Log4j:log4j-spring.properties, log4j-spring.xml
- Log4j2:log4j2-spring.xml
- JDK (Java Util Logging):logging.properties
Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置
5 自定义输出格式
在 application.properties 配置如下参数控制输出格式
- logging.pattern.console:定义输出到控制台的样式(不支持 JDK Logger)
- logging.pattern.file:定义输出到文件的样式(不支持 JDK Logger)