前提介绍

Spring Boot能够运用多种日志记载东西,例如Logback、Log4J2和Java util logging等。其中,Spring Boot默许运用Logback作为日志记载东西,并将日志输出到操控台,也能够输出到文件中。您能够经过增加spring-boot-starter-logging依靠来引入Logback,而在增加其他任何Spring Boot starter时,Spring Boot都会默许引入spring-boot-starter-logging依靠,因此您无需独自增加该依靠。

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging
假如想要运用Log4J2作为Spring Boot的日志记载东西,需求扫除Logback JAR并增加Log4J2的依靠。

运用Logback记载日志的话,只需求在装备文件中装备日志等级,而且console默许输出ERROR、WARN和INFO等级的日志。能够经过修改logging.level特点来改动日志输出的等级,而且还能够经过装备logging.file或logging.path特点将日志输出到文件中,当文件巨细达到10M时,会主动新建一个文件来记载日志。

Spring默许日志文件

Spring Boot 的日志文件名称默许为 spring.log。假如你没有设置 logging.file 特点,Spring Boot 将默许在运用程序的作业目录下生成一个名为 spring.log 的日志文件。你也能够经过指定 logging.file.name 或 logging.file.path 特点来自界说日志文件的名称和途径。

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging

Spring的日志装备参数

接下来将讨论如安在application.properties、application.yml、Logback XML中装备Logback,并运用Log4j2在Spring Boot运用中进行日志装备。

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging

  • logging.level.* : 可设置package前缀的日志等级。
  • logging.file : 装备日志输出文件名或绝对途径。
  • logging.path : 装备日志途径。假如未装备logging.file,将默许运用spring.log。
  • logging.pattern.console : 界说console内日志的款式。
  • logging.pattern.file : 界说文件中日志的款式。
  • logging.pattern.level : 界说烘托不同等级日志的格局。默许为%5p。
  • logging.exception-conversion-word : 界说日志发生异常时的转化字。
  • PID : 当时进程的ID。

logging.level

logging.level:设置日志等级,可运用TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。可运用root等级和package等级来操控日志输入等级。创立具有以下依靠联系的运用程序。

maven装备

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

properties文件

运用src\main\resources\application.properties装备日志等级

logging.level.root= WARN
logging.level.org.springframework.security= DEBUG
logging.level.org.springframework.web= ERROR
logging.level.org.hibernate= DEBUG
logging.level.org.apache.commons.dbcp2= DEBUG 

yaml文件

运用src\main\resources\application.yml

logging:
  level:
    root: WARN        
    org:
      springframework:
        security: DEBUG
        web: ERROR    
      hibernate: DEBUG        
      apache:
        commons:
          dbcp2: DEBUG 

logging.file

Spring Boot默许将日志输出到操控台。假如需求将日志写入文件,能够装备logging.file或logging.path特点。logging.file特点可用于界说日志文件名和途径。

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.file = mylogfile.log 

mylogfile.log可在根目录中创立,或以concretepage/mylogfile.log的方式在相对根目录下创立。另外,可为日志文件指定绝对途径。

application.yml中装备

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
  file: mylogfile.log  

logging.path

装备logging.path或logging.file特点可将日志写入文件。logging.path特点用于界说日志文件夹途径。可在application.properties文件中进行装备。

application.properties装备

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs  

spring.log日志文件将被创立在concretepage/logs文件夹下,该文件夹相关于项目根目录的途径。同时,也能够经过装备绝对途径的方式来界说日志文件的方位。

application.yml装备

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
  path: concretepage/logs  

logging.patter.console

咱们能够经过设置 logging.pattern.console 特点,来改动输出到操控台的日志展现款式。具体展现款式包含时刻、日志等级、线程名、日志名、以及音讯。您能够自由调整这些款式,以满足个人偏好。

application.properties装备

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n

application.yml装备

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
  pattern:
    console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n' 

logging.pattern.file

为了使文件中的日志款式更加契合咱们的需求,咱们需求设置logging.pattern.file特点。这能够经过以下过程完成:

  1. 经过logging.file或logging.path特点,将日志记载到文件中。能够依据实践需求,选择logging.file指定日志文件名和途径,或logging.path指定日志文件夹途径,Spring Boot将主动创立一个名为spring.log的日志文件。

  2. 修改application.properties文件,增加以下内容:

logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

该特点设置了一个包含时刻戳、线程、日志等级、日志名和音讯的款式。您能够依据实践需求进行调整。

  1. 运转运用程序,新的日志款式将运用于记载在文件中的日志。

留意,在实践运转中,您还能够运用其他的日志特点和款式进行设置,以满足您的实践需求。此外,关于较大的日志文件,您能够考虑运用日志文件的翻滚策略来下降文件巨细。

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs
logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n  

运用logging.path特点能够在运用程序的根目录下创立concretepage/logs目录,并默许运用spring.log作为文件名保存日志文件。另外,您能够经过设置logging.pattern.console特点来指定操控台上的日志款式,以便更好地显现日志信息。

经过命令行改动日志的输出等级

Sping Boot 默许输出ERROR , WARN , INFO 等级的日志。咱们能够经过命令行使能DEBUG ,TRACE等级的日志输出,作用是跟装备文件相同的。想象咱们有一个名为my-app.jar的可执行的JAR包咱们能够在发动运用是使能DEBUG等级日志输出。

java -jar my-app.jar --debug

在application.properties

debug=true

application.yml

debug:true

相同的方式使能TRACE等级的日志

java -jar my-app.jar --trace

application.properties

trace=true

application.yml

trace: true

内容总结

spring-boot-starter-logging是Spring Boot提供的一个用于装备日志相关依靠的starter,它提供了对常见的日志结构的支撑,包含Logback、Log4j2和Java Util Logging(JUL)。

运用spring-boot-starter-logging能够方便地装备和运用日志结构,而且能够主动适配多种不同的日志结构,使得开发者能够快速地切换和选择合适自己的日志结构。

在运用spring-boot-starter-logging时,能够经过装备文件来自界说日志等级、日志格局和输出目标等信息。比如,能够运用application.properties装备文件来装备日志输出的格局:

logging.pattern.console=%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n

该装备将格局化操控台输出的日志信息,以小时:分钟:秒.毫秒、线程id、日志等级、logger名称和音讯的方式输出。

此外,Spring Boot还提供了关于常见的日志结构的主动装备,如主动装备Logback日志结构,即能够运用logback.xmllogback-spring.xml进行装备,这些装备文件需求放置在classpath途径下,Spring Boot会主动地读取和解析这些装备文件来进行日志的记载。

总之,spring-boot-starter-logging为开发者提供了一个便捷、易用的日志装备和运用解决方案,能够让开发者更加专心于业务代码的开发,而不用花费过多的精力来装备和处理日志相关的细节问题。