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

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

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

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

控制台输出

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

您的应用程序带有--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)

日志颜色设置:

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

%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.*属性一起使用:

如果要编写除控制台输出之外的日志文件,则需在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的日志详解相关推荐

  1. Spring Boot 集成 FreeMarker 详解案例

    年轻就不应该让自己过得太舒服" – From yong 一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Myba ...

  2. Spring Boot Logback 配置详解

    1.Logback简介 Logback是由log4j创始人设计的又一个开源日志组件. 相比于log4j,Logback重写了内核,在一些关键执行路径上性能提升10倍以上.而且logback不仅性能提升 ...

  3. Spring Boot(3)---Spring Boot启动器Starter详解

    Spring Boot的启动器Starter详解 Spring Boot 简化了 Spring 应用开发,不需要配置就能运行 Spring 应用, Spring Boot 管理 Spring 容器.第 ...

  4. 企业分布式微服务云SpringCloud SpringBoot mybatis (二)Spring Boot属性配置文件详解...

    相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...

  5. docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!

    本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...

  6. Spring Boot属性配置文件详解

    相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...

  7. Spring Boot (4)---配置文件详解

    Spring2.0 Boot配置文件详解 配置文件说明 Spring Boot 配置文件允许为同一套应用,为不同的环境用不同的配置文件.比如开发环境.测试环境.生成环境.你可以用 properties ...

  8. Spring框架之Spring Boot框架搭建详解|CSDN创作打卡

    一.IDEA搭建Spring Boot 1.打开IDEA选择file-new-Project 2.进入新界面先选择Spring Initializr,然后选择SDK版本,及 Initializr Se ...

  9. 【204期】图文并茂,Spring Boot Starter 万字详解!还有谁不会?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

最新文章

  1. java学习笔记(十三)----IO操作
  2. [LeetCode] Same Tree
  3. RPM包管理命令rpm
  4. excel按季度分类汇总_Excel数据分析实战(1)--电商销售记录分析
  5. mysql 结果集什么意思_结果集中的mysql“和”逻辑
  6. 理论基础 —— 索引
  7. H264帧的分析sps pps
  8. Java执行系统命令策略
  9. union的限制, 临时表大小的优化
  10. eslint 验证vue文件 报错 unexpected token =解决方法
  11. 浅谈FOF场外投资交易流程
  12. Linux安装samba服务
  13. WS2:Windows系统中嵌入式Linux开发之神器
  14. linux mysql backdoor_Linux SSH Backdoor分析排查
  15. 深度学习领域,最惊艳的论文!
  16. 科技的性感:三星冰洗如何演绎时尚生活?
  17. 频谱分析仪是什么东西 怎么去选择----TFN FMT350(3.1gHz)/FMT450(4.4gHz)/FMT650(6gHz) 系列频谱仪
  18. FFmpeg滤镜:制作图片视频流(续)
  19. Hexo+icarus主题配置
  20. Anaconda3+win10

热门文章

  1. python 扩展_用Python方法对Cursor进行扩展
  2. 汉化)称号插件.php,[管理|信息][UD]NameTags——基于权限的称号插件,兼容计分板,GUI显示[1.7.10-1.12.2]...
  3. 嵌入式实时操作系统Ucos3
  4. S3C6410处理器介绍
  5. 处理器不同模式下寄存器
  6. 内核并发控制---完成量 (来自网易)
  7. 多表查询,自连接,子查询
  8. mypow等于1什么意思c语言,C语言基础练习题总结
  9. oracle无效的存储过程怎么解决,oracle数据库 编译无效存储过程
  10. 【LeetCode】【HOT】297. 二叉树的序列化与反序列化(BFS)