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

微信公众号:一个优秀的废人
若有问题或建议,请后台留言,我会尽力解决你的问题。

前言

如题,今天介绍 springboot 默认日志的配置。前端

默认日志 Logback

默认状况下,Spring Boot 用 Logback 来记录日志,并用 INFO 级别输出到控制台。若是你在日常项目中用过 Spring Boot,你应该已经注意到不少 INFO 级别的日志了。默认日志长这样:java

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}

从上面的日志能够看到,日志输出内容元素具体以下:mysql

  • 时间日期:精确到毫秒
  • 日志级别: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 级别的日志输出到控制台。spring

咱们能够经过两种方式切换至 DEBUG 级别:sql

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

多彩输出

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

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

文件输出

Spring Boot默认配置只会输出到控制台,并不会记录到文件中,可是咱们一般生产环境使用时都须要以文件方式记录。微信

若要增长文件输出,须要在 application.properties 中配置 logging.file 或 logging.path属性。app

logging.file,设置文件,能够是绝对路径,也能够是相对路径。如:logging.file=my.log
logging.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.groovy
Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2:log4j2-spring.xml, log4j2.xml
JDK (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、前端、算法资料分享

一个优秀的废人

相关文章
相关标签/搜索