Springboot中的默认日志框架配置详解

 更新时间:2023年09月20日 10:27:06   作者:CD4356  
这篇文章主要介绍了Springboot中的默认日志框架配置详解,spring boot日志默认会输出到控制台,所以并不需要我们做过多配置,但不过不喜欢控制台默认日志格式,则可以使用logging.pattern.console属性配置,需要的朋友可以参考下

默认日志框架–配置全解

spring boot2.2.4官方文档

#日志记录
logging:
  #日志级别
  level:
    #可以调整不同目录的日志级别(注意:必须指定包,否则报错)
    root: info
    com.cd.example.one: trace
    com.cd.example.two: debug
    com.cd.example.three: info
  #日志文件
  file:
    #日志文件完整路径(包含日志文件名)
    name: D:\idea\logs\example-loggin.log
    #日志文件目录路径(spring boot默认使用spring.log作为日志文件)
    #path: D:\idea\log
    #文件大小(默认10MB)
    max-size: 10MB
    #文件保存周期(默认7天,七天之后就会删除)
    max-history: 7
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: -%d{yyyy-MM-dd HH:mm:ss} - %clr(%-5level) - [%thread] - %logger{50} -- %clr(%msg) %n
    #在文件输出的日志格式
    file: '%d{yyyy-MM-dd hh:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'
#spring boot主配置
spring:
  #开启控制台日志彩色输出功能
  output:
    ansi:
      enabled: always

日志格式

#日志记录
logging:
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: -%d{yyyy-MM-dd HH:mm:ss} - %-5level - [%thread] - %logger{50} -- %msg %n
    #在文件输出的日志格式
    file: '%d{yyyy-MM-dd hh:mm} %-5level [%thread] %logger{50} -- %msg %n'

日志输出格式

  • %d 日志输出时间
  • %-5level 日志级别,并且使5个字符靠左对齐(从左显示5个字符宽度)
  • %thread 线程名
  • %logger{50} 日志输出者名字(全类名),最长50个字符,否则按照句点分隔
  • %msg 日志消息
  • %n 换行符

cd4356

cd4356

配置日志格式时遇到的异常:

Caused by: while scanning for the next token found character ‘%’ that cannot start any token. (Do not use % for indentation) in ‘reader’, line 26, column 14: console: %d{yyyy-MM-dd HH:mm:ss} %-5level …

异常原因:

yml配置文件中(缩进不能使用%开头),而配置logging.pattern.console属性值时以%开头了,所以报错

解决方案:

使用''包裹起来 或者 在首个%前随便加些字符(只要不让%开头即可)

将
logging:
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: %d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n
改成
logging:
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: '%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'
或者改成
logging:
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: -%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n

日志级别

1) level有七个级别,由低到高: trace < debug < info < warn < error < fatal < off

2) spring boot默认使用info日志级别,如果我们不配置-则使用默认该级别

3)只有指定级别及更高级别的日志会生效,低于指定级别的日志不会生效

#日志记录
logging:
  #日志级别
  level:
    #可以调整不同目录的日志级别(注意:必须指定包,否则报错)
    root: info
    com.cd.example.one: trace
    com.cd.example.two: debug
    com.cd.example.three: info

日志输出到控制台

spring boot日志默认会输出到控制台,所以并不需要我们做过多配置。但不过不喜欢控制台默认日志格式,则可以使用 logging.pattern.console 属性配置

#日志记录
logging:
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: -%d{yyyy-MM-dd HH:mm:ss} - %-5level - [%thread] - %logger{50} -- %msg %n

cd4356

控制台输出日志高亮显示

1)控制台输出默认是全黑显示,为了提高可读性,我们可以配置日志高亮显示

2)配置 spring.output.ansi.enabled 属性开启控制台彩色输出功能

3)配置控制台日志格式时,使用 %clr() 彩色转换器对输出文本着色,也可使用 %clr(){颜色} 来指定使用的颜色(如 %clr(){blue} )

#spring boot主配置
spring:
  #开启控制台日志彩色输出功能
  output:
    ansi:
      enabled: always
#日志记录
logging:
  #日志输出格式
  pattern:
    #在控制台输出的日志格式
    console: -%d{yyyy-MM-dd HH:mm:ss} - %clr(%-5level) - [%thread] - %logger{50} -- %clr(%msg) %n

cd4356

注意:输出到文件的日志格是无法高亮的,所以不要使用 %clr() 彩色转换器对输出到文件的日志文本着色,不然 %clr() 会被转义,看起来有点像乱码的感觉

日志输出到文件

1) 默认情况下,Spring Boot只会在控制台中输出日志信息,不写入日志文件。

2)如果除了在控制台输出外,还想写入日志文件中,则可以设置一个 logging.file.name 或 logging.file.path 属性

cd4356

官网有一段描述:

1)如果 logging.file.name 和 logging.file.path 属性都不指定,那么日志仅在控制台记录。

2)指定 logging.file.name 或 logging.file.path 属性,日志就会写入日志文件。指定一个属性即可,如果两个都指定,那么只有 logging.file.name 属性生效

3) logging.file.name 属性用于指定日志文件完整路径(包含文件名), logging.file.path 属性用于指定日志文件目录路径(不包含文件名,使用spring boot默认日志文件名 spring.log )。

两个属性都是用于将日志记录到日志文件中,那我们该使用哪个属性呢?   

1)如果不想使用spring boot默认的日志文件名 spring.log ,就使用 logging.file.name 属性

2)如果要使用spring boot默认的日志文件名 spring.log ,就使用 spring.file.path

#日志记录
logging:
  #日志文件
  file:
    #日志文件完整路径(包含日志文件名)
    name: D:\idea\logs\example-logging.log
    #日志文件目录路径(spring boot默认使用spring.log作为日志文件)
    path: D:\idea\logs
    #文件大小(默认10MB)
    max-size: 10MB
    #文件保存周期(默认7天,七天之后就会删除)
    max-history: 7
  #日志输出格式
  pattern:
    #在文件输出的日志格式
    file: '%d{yyyy-MM-dd hh:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'

3)每天凌晨后,spring boot都会将前一天的日志文件进行打包压缩

到此这篇关于Springboot中的默认日志框架配置详解的文章就介绍到这了,更多相关Springboot默认日志配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA引入本地jar包的几种方法

    IDEA引入本地jar包的几种方法

    本文主要介绍了IDEA引入本地jar包的几种方法,文中通过图文结合的方式码介绍的非常详细,对大家的学习或工作有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2024-01-01
  • Java8新特性之再见Permgen_动力节点Java学院整理

    Java8新特性之再见Permgen_动力节点Java学院整理

    这篇文章主要介绍了Java8新特性之再见Permgen的相关知识,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-06-06
  • Java网络IO模型详解(BIO、NIO、AIO)

    Java网络IO模型详解(BIO、NIO、AIO)

    Java支持BIO、NIO和AIO三种网络IO模型,BIO是同步阻塞模型,适用于连接数较少的场景,NIO是同步非阻塞模型,适用于处理多个连接,支持自JDK1.4起,AIO是异步非阻塞模型,适用于异步操作多的场景,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • JAVA读取文本文件内容实例代码

    JAVA读取文本文件内容实例代码

    这篇文章主要给大家介绍了关于JAVA读取文本文件内容的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Java实现分库分表实践指南

    Java实现分库分表实践指南

    在开发中我们经常使用到分库分表,但是一般是我们前期就已经做了规划,对数据库怎么划分,对哪些表进行分表,这篇文章主要给大家介绍了关于Java实现分库分表的相关资料,需要的朋友可以参考下
    2024-01-01
  • Springboot 2使用外部Tomcat源码分析

    Springboot 2使用外部Tomcat源码分析

    这篇文章主要介绍了Springboot 2使用外部Tomcat源码分析,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Java如何实现支付宝电脑支付基于servlet版本

    Java如何实现支付宝电脑支付基于servlet版本

    这篇文章主要介绍了Java如何实现支付宝电脑支付基于servlet版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 详细聊一聊java语言中的package和import机制

    详细聊一聊java语言中的package和import机制

    这篇文章主要给大家介绍了关于java语言中package和import机制的相关资料,Java中的package是指将相关的类组织在一起的一种机制,它可以用来避免命名冲突,也可以方便地管理和维护代码,需要的朋友可以参考下
    2024-01-01
  • Java异步非阻塞编程的几种方式总结

    Java异步非阻塞编程的几种方式总结

    这篇文章主要介绍了Java异步非阻塞编程的几种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java程序中指定某个浏览器打开的实现方法

    java程序中指定某个浏览器打开的实现方法

    最近工作中遇到一个需求,是要利用java打开指定浏览器,整理后发现有四种解决的方法,所以想着分享出来,下面这篇文章主要给大家介绍了java程序中指定某个浏览器打开的实现方法,,需要的朋友可以参考下。
    2017-03-03

最新评论