乐趣区

SpringBoot 实战 (七) | 默认日志配置

微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。
前言
如题,今天介绍 springboot 默认日志的配置。
默认日志 Logback
默认情况下,Spring Boot 用 Logback 来记录日志,并用 INFO 级别输出到控制台。如果你在平常项目中用过 Spring Boot,你应该已经注意到很多 INFO 级别的日志了。默认日志长这样:
2019-02-18 22:02:14.907 INFO 23384 — [main] org.hibernate.Version : HHH000412: Hibernate Core {5.3.7.Final}
2019-02-18 22:02:14.907 INFO 23384 — [main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-02-18 22:02:15.110 INFO 23384 — [main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
从上面的日志可以看到,日志输出内容元素具体如下:

时间日期:精确到毫秒
日志级别:ERROR, WARN, INFO, DEBUG or TRACE
进程 ID
分隔符:— 标识实际日志的开始
线程名:方括号括起来(可能会截断控制台输出)
Logger 名:通常使用源代码的类名
日志内容

日志依赖
Logback 日志框架依赖于 spring-boot-starter-logging 包,但我们并不需要在 maven 中加入这个依赖,因为 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。
控制台输出
在 Spring Boot 中默认配置了 ERROR、WARN 和 INFO 级别的日志输出到控制台。
我们可以通过两种方式切换至 DEBUG 级别:

在运行命令后加入 –debug 标志,如:$ java -jar myapp.jar –debug
在 application.properties 中配置 debug=true,该属性置为 true 的时候,核心 Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为 DEBUG 级别。

多彩输出
如果你的终端支持 ANSI,设置彩色输出会让日志更具可读性。通过在 application.properties 中设置 spring.output.ansi.enabled 参数来支持。

NEVER:禁用 ANSI-colored 输出(默认项)
DETECT:会检查终端是否支持 ANSI,是的话就采用彩色输出(推荐项)
ALWAYS:总是使用 ANSI-colored 格式输出,若终端不支持的时候,会有很多干扰信息,不推荐使用

文件输出
Spring Boot 默认配置只会输出到控制台,并不会记录到文件中,但是我们通常生产环境使用时都需要以文件方式记录。
若要增加文件输出,需要在 application.properties 中配置 logging.file 或 logging.path 属性。
logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.loglogging.path,设置目录,会在该目录下创建 spring.log 文件,并写入日志内容,如:logging.path=/var/log
注:二者不能同时使用,如若同时使用,则只有 logging.file 生效 默认情况下,日志文件的大小达到 10MB 时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO
级别控制
在 Spring Boot 中只需要在 application.properties 中进行配置完成日志记录的级别控制。
配置格式:logging.level.*=LEVEL
logging.level:日志级别控制前缀,* 为包名或 Logger 名 LEVEL:选项 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
举例:
logging.level.com.nasus=DEBUG:com.nasus 包下所有 class 以 DEBUG 级别输出 logging.level.root=WARN:root 日志以 WARN 级别输出
自定义日志配置
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovyLog4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xmlLog4j2:log4j2-spring.xml, log4j2.xmlJDK (Java Util Logging):logging.properties
Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置(如使用 logback-spring.xml,而不是 logback.xml),命名为 logback-spring.xml 的日志配置文件,spring boot 可以为它添加一些 spring boot 特有的配置项(下面会提到)。默认的命名规则,并且放在 src/main/resources 下面即可
如果你即想完全掌控日志配置,但又不想用 logback.xml 作为 Logback 配置的名字,application.yml 可以通过 logging.config 属性指定自定义的名字:
logging.config=classpath:logging-config.xml
虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行时 Profile 使用不同的日志配置,这个功能会很有用。
一般不需要这个属性,而是直接在 logback-spring.xml 中使用 springProfile 配置,不需要 logging.config 指定不同环境使用不同配置文件。springProfile 配置在下面介绍。
多环境日志输出
logback-spring.xml :
<configuration>

<!– 测试环境 + 开发环境. 多个使用逗号隔开. –>
<springProfile name=”test,dev”>
<logger name=”com.example.demo.controller” level=”DEBUG” additivity=”false”>
<appender-ref ref=”consoleLog”/>
</logger>
</springProfile>

<!– 生产环境. –>
<springProfile name=”prod”>
<logger name=”com.example.demo.controller” level=”INFO” additivity=”false”>
<appender-ref ref=”consoleLog”/>
</logger>
</springProfile>
</configuration>
application.yml 增加环境选择的配置 active: dev
spring:
profiles:
active: dev
datasource:
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
username: root
password: 123456
根据 active 的环境,自动采用上面配置的 springProfile 的 logger 日志。
后语
以上 SpringBoot 默认日志的配置教程。最后,对 Python、Java 感兴趣请长按二维码关注一波,我会努力带给你们价值,如果觉得本文对你哪怕有一丁点帮助,请帮忙点好看,让更多人知道。
另外,关注之后在发送 1024 可领取免费学习资料。资料内容详情请看这篇旧文:Python、C++、Java、Linux、Go、前端、算法资料分享

退出移动版