Spring Boot日志

Spring Boot日志:

  • Spring Boot通过使用Commons Logging框架作为内部日志,但是底层可以在多个日志框架之间进行切换或者集成多个框架
  • 默认采用的日志框架是Logback + Log4j 的实现
  • spring5以后,Commons Logging就被spring整和了, spring-boot-starter中也包含了日志的所有功能
  • Spring Boot的日志是利用监听器配置好的,在项目启动之前就初始化了
  • 在Spring Boot的配置文件中,所有以 logging 开头的配置都是日志的配置
  • @Slf4j 和手动导入Logger log = LoggerFactory.getLogger(getClass());效果一样

日志门面(日志的抽象层)

  • 日志的门面是为 Java 日志的访问提供了一套标准和规范的 API 框架,也就是日志的抽象层,其主要意义在于提供接口,例如:
  • JCL(Jakarta Commons Logging)(2014后不再维护中)
  • jboss-logging (不适合企业项目开发使用)
  • SLF4j(Simple Logging Facade for Java)

日志实现

  • 日志实现,简单来说就是实现日志门面(日志的抽象层)中的API接口,例如:
  • Log4j
  • JUL(java.util.logging)(java.util.logging 担心被抢市场推出的一种日志框架)
  • Log4j2 (Apache开发的很强大的日志框架,借助了log4j的名称,但是很多框架都未适配上)
  • Logback(Log4j同一个人开发的新框架,做了重大的升级)

日志格式:

  • 日期和时间 : 精确到毫秒
  • 日志的级别 :例如 (error、info、warn、debug、trace),Logback 没有FATAL对应的是error级别
  • 进程的标识 : 可以查询该服务的具体进程
  • — : 分割线
  • 线程名称 : 可以是用 […] 框起来 利于查看
  • 记录器名称 : 这通常是运行类的名称
  • 日志消息

在这里插入图片描述

日志级别,由低到高为:

  • all :打印所有的日志

  • trace:微量,少许的意思,级别最低,一般记录了框架底层的日志,很少使用

  • debug:需要开发调试时候的关键信息打印;

  • info:普通的打印信息(默认日志级别);

  • warn:警告,不影响使用,但需要注意的问题,例如类的版本过时了

  • error:错误信息,级别较高的错误日志信息;

  • fatal:致命的,因为代码异常导致程序退出执行的事件,例如jvm系统崩溃

  • off :关闭所有的日志

SpringBoot预定义两个组

  • web: 包含org.springframework.core.codec、org.springframework.http、org.springframework.web、org.springframework.boot.actuate.endpoint.web、org.springframework.boot.web.servlet.ServletContextInitializerBeans
  • sql: 包含org.springframework.jdbc.core、org.hibernate.SQL、org.jooq.tools.LoggerListener (如果想要看到执行的sql语句,更改sql包的日志级别即可)

日志文件输出

  • SpringBoot默认只把日志写在控制台,如果想额外记录到文件,可以在application.properties中添加logging.file.name或logging.file.path配置项
logging.file.namelogging.file.path示例效果
未指定未指定仅控制台输出
指定未指定D:\my.log写入指定文件。可以加路径,默认路径是项目根路径
未指定指定D:\写入指定目录,文件名为spring.log
指定指定logging.file.path无效,以logging.file.name为准

日志文件归档与滚动切割

  • 生产环境应该配置按日志级别分类,并且进行文件归档和滚动切割,防止日志文件过大
  • 归档:每天的日志单独存到一个文档中
  • 切割:每个文件10MB,超过大小切割成另外一个文件
  • 每天的日志应该独立分割出来存档。如果使用logback(SpringBoot默认整合),可以通过application.properties/yaml文件指定日志滚动规则,如果是其他日志系统,需要自己在日志配置文件中进行配置(添加log4j2.xml或log4j2-spring.xml)
  • SpringBoot 默认支持的滚动规则设置为,所以SpringBoot 默认就支持归档和切割
配置项描述
logging.logback.rollingpolicy.file-name-pattern日志存档的文件名格式(默认值:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz)。需要开启日志文件输出。LOG_FILE就是日志输出的路径和名称
logging.logback.rollingpolicy.clean-history-on-start应用启动时是否清除以前存档(默认值:false)
logging.logback.rollingpolicy.max-file-size存档前,每个日志文件的最大大小(默认值:10MB)
logging.logback.rollingpolicy.total-size-cap日志文件被删除之前,可以容纳的最大大小(默认值:0B,即容纳无限大小)。设置1GB则磁盘存储超过 1GB 日志后就会删除旧日志文件
logging.logback.rollingpolicy.max-history日志文件保存的最大天数(默认值:7)
  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值