SpringBoot2.1.5(16)--- Spring Boot的日志详解

SpringBoot2.1.5(16)--- Spring Boot的日志详解

 

市面上有许多的日志框架,比如 JUL( java.util.logging), JCL( Apache Commons Logging), Log4j, Log4j2, Logback、 SLF4j、 jboss-logging等等。

Spring Boot 2.*默认采用了slf4j+logback的形式 ,slf4j是个通用的日志门面,logback就是个具体的日志框架了,我们记录日志的时候采用slf4j的方法去记录日志,底层的实现就是根据引用的不同日志jar去判定了。所以Spring Boot也能自动适配JCL、JUL、Log4J等日志框架,它的内部逻辑就是通过特定的JAR包去适配各个不同的日志框架。

è¿éåå¾çæè¿°

日志格式

2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine :
 Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] :
 Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader :
 Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean :
 Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean :
 Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

日志包含输出以下信息:

  • 日期和时间:毫秒精度,易于排序。
  • 日志级别:错误、警告、信息、调试或跟踪。
  • 进程ID。
  • A---分隔符,用于区分实际日志消息的开始。
  • 线程名称:括在方括号中(可能会因控制台输出而被截断)。
  • log名称:这通常是源类名(通常缩写)。
  • 日志消息。

logback没有致命级别FATAL.级别最高为错误ERROR。

添加日志依赖

假如maven依赖中添加了spring-boot-starter-logging


    org.springframework.boot
    spring-boot-starter-logging

但是呢,实际开发中我们不需要直接添加该依赖。 
你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。工程中有用到了Thymeleaf,而Thymeleaf依赖包含了spring-boot-starter,最终我只要引入Thymeleaf即可。
 


    org.springframework.boot
    spring-boot-starter-thymeleaf

 

控制台输出

 

 

默认的日志配置会在消息写入时将其回送到控制台。默认情况下,会记录错误级别、警告级别和信息级别的消息。您还可以通过启动

您的应用程序带有--debug标志。

$ java -jar myapp.jar --debug

也可以通过在application.properties. 文件中设置debug=true来输出日志。

启用调试模式时,选择核心log(嵌入式容器、Hibernate和SpringBoot)配置为输出更多信息。启用调试模式不配置

您的应用程序将以调试级别记录所有消息。或者,您可以通过使用--trace标志启动应用程序来启用“跟踪”模式(或

trace=true(在application.properties中)。这样做可以为以下选项启用跟踪日志记录:

核心log(嵌入式容器、Hibernate模式生成和整个Spring产品组合)

日志级别从低到高分为:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL。

如果设置为 WARN ,则低于 WARN 的信息都不会输出。 
Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台。 
 

如果每次都写这行代码会很麻烦,可以使用注解,但是需要使用lombok:

添加依赖:

//注解
compile 'org.projectlombok:lombok:1.16.18'

安装 lombok 的插件:

Go to File > Settings > Plugins
Click on Browse repositories…
Search for Lombok Plugin
Click on Install plugin
Restart Android Studio
允许注解处理,Settings -> Compiler -> Annotation Processors


可以使用{} 占位符来拼接字符串,而不需要使用““+””来连接字符串。
 

日志颜色

如果终端支持ANSI,则颜色输出用于帮助可读性。你可以设定spring.output.ansi.启用为支持的值,以覆盖自动检测。

颜色编码是使用%clr转换字配置的。在最简单的形式中,转换器颜色根据日志级别的输出,如下例所示:

%clr(%5p)

日志颜色设置:

SpringBoot2.1.5(16)--- Spring Boot的日志详解_第1张图片

或者,可以通过将其作为选项提供给转换。例如,要使文本变为黄色,请使用以下设置:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

这种方式支持下面的颜色

• blue

• cyan

• faint

• green

• magenta

• red

• yellow

日志文件输出

默认情况下,Spring引导只记录到控制台,不写入日志文件。如果你想写日志文件除了控制台输出之外,还需要设置logging.file或logging.path属性(用于例如,在您的application.properties中)。

下表显示了如何将logging.*属性一起使用:

SpringBoot2.1.5(16)--- Spring Boot的日志详解_第2张图片

如果要编写除控制台输出之外的日志文件,则需在application.properties中设置logging.file或logging.path属性。

logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
logging.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=/var/log 
如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。 
如果只配置 logging.path,在 /var/log文件夹生成一个日志文件为 spring.log
注:二者不能同时使用,如若同时使用,则只有logging.file生效 
默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO
 

级别控制
所有支持的日志记录系统都可以在Spring环境中设置记录级别(例如在application.properties中) 
格式为:'logging.level.* = LEVEL'

logging.level:日志级别控制前缀,*为包名或Logger名 
LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

root log 可以使用logging.level.root进行配置。

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

自定义日志配置
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:

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配置在下面介绍。
 

SpringBoot2.1.5(16)--- Spring Boot的日志详解_第3张图片

 

 

你可能感兴趣的:(spring,boot2.1.5)