Springboot教程(四)——日志

Spring Boot可以使用很多日志框架,本文将使用slf4j框架

解读日志

我们来看一个日志:

2024-02-25T15:01:11.515+08:00  INFO 3272 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''
  • 2024-02-25T15:01:11.515+08:00 时间,这里表示2024年2月25日15时01分11秒515毫秒,东八区时区(UTC+8)
  • INFO 日志级别,这在后面会讲到
  • 3272 当前进程的PID
  • --- 分隔号
  • main 打印日志的线程名称
  • o.s.b.w.embedded.tomcat.TomcatWebServer 打印日志的类,其中o.s.b.w是简写
  • Tomcat started on port 8080 (http) with context path '' 具体的日志信息

日志级别

日志从优先级高到低分为如下几个级别:

  1. ERROR:错误
  2. WARN:警告
  3. INFO:信息
  4. DEBUG:调试
  5. TRACE:追踪

不同日志的重要性不同,因此在不同的项目阶段,希望保留的日志也不同。如开发者需要保留全部日志,而维护者只需要保留INFO以上的日志。

我们可以在application.properties配置文件内更改需要保留的优先级:

logging.level.[完整的包名或类名]=级别

Spring Boot默认只打印INFO级别的日志

打印日志

创建日志对象

打印日志,需要先创建一个日志对象。可以采用如下代码创建日志对象:

import org.slf4j.LoggerFactory

class XXX{
    companion object{
        private val log = LoggerFactory.getLogger(XXX::class.java)
    }
}

注意,Spring Boot中有很多LoggerFactory。需要导入的是org.slf4j.LoggerFactory。

其中,companion object相当于Java中的static关键字,表示log对象只会被创建一次,防止在实例化时创建新的日志对象,同时,使用private val修饰log变量,使其不能被其他类访问或被任何类修改

另外,getLogger还可以传入一个字符串。以下是使用Class和使用字符串打印出来的日志的区别:

可以看到,传入Class的日志对象打印出来了包名和类名;而传入字符串的日志对象只打印出了传入的字符串

使用日志对象

一个日志对象有如下方法:

  • error 打印错误日志
  • warn 打印警告日志
  • info 打印信息日志
  • debug 打印调试日志
  • trace 打印追踪日志

实践一下:

创建TestController类:

package com.example.c0101.controller

import org.slf4j.LoggerFactory
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class TestController {

    companion object{
        private val log = LoggerFactory.getLogger(TestController::class.java)
    }

    @RequestMapping
    fun index(): String{
        log.error("This is an error")
        log.warn("This is a warning")
        log.info("This is a info")
        log.debug("This is for debug")
        log.trace("This is for trace")
        return "Hello World"
    }

}

访问http://127.0.0.1:8080,控制台输出如下:

成功打印了不同级别的日志。为什么没打印debug和trace呢?因为Spring Boot默认的日志等级为INFO,可以通过前文的方法修改日志等级

保存日志

保存到指定路径

可以修改配置文件的logging.file.path保存日志到指定路径,如:

logging.file.path=logs

 表示将日志保存到当前项目的logs文件夹内:

保存到指定文件

可以修改配置文件的logging.file.name保存日志到指定文件,如:

logging.file.name=logs.log

 表示将日志保存到当前项目的logs.log文件内:

设置日志文件的保存天数

可以修改配置文件中的logging.logback.rollingpolicy.max-history设置保存天数,如:

logging.logback.rollingpolicy.max-history=7

 表示设置保存天数为7天,会自动删除超过7天的日志文件

设置日志文件的容量上限

可以修改配置文件中的logging.logback.rollingpolicy.max-file-size设置日志文件的容量,如果超过了容量,则打包为压缩包文件,如:

logging.logback.rollingpolicy.max-file-size=7KB

表示设置容量上限为7KB,超过上限则打包成压缩包

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值