SpringBoot 日志系列:(一)日志类型


一、为什么要用日志?

以前总是通过 System.out.println("重要数据") 在控制台输出各种重要数据,但到了真实开发环境才发现日志是极其重要的东西。无论是在开发环境还是正式环境,日志都是定位 bug 和解决 bug 的重要信息。

日志能干的事情很多,能够定位问题,解决问题,是最大的功能点:

  • 记录一切: 日志帮助我们记录程序功能都干了什么,无论是正常的输入输出还是出现异常,都可以用日志记录
  • 定位问题: 日志可以帮助程序员调试问题,帮助测试人员定位问
  • 记录分析用户行为: 统计分析师用来记录用户的一起行为,用于分析用户的习惯和商业价值
  • 备份和还原实时数据: 数据库工程师用来作为一种特殊的数据库

二、日志类型

日志类型有很多,比如 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…

主要分为抽象层和实现层:

日志抽象层日志实现
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-loggingLog4j , JUL , Log4j2 , Logback

抽象层:

  • JCL:不使用,从2014年开始就没更新过了。
  • jboss-logging:不使用,使用场景有限。
  • SLF4j:springboot中使用的日志抽象层。

实现层:

  • Log4j
  • Log4j2:apache 借 Log4j 之名写的一个日志框架,并不是 Log4j 的升级版。太高端了,很多框架适配不了。
  • Logback:Log4j 的升级版本,和 SLF4j 出自同一个人之手。Spring Boot 约定的默认配置。

Logback是Log4j的升级版本出至于同一个人开发的。

SpringBoot选用 SLF4j 和 Logback。大部分场景推荐 Spring Boot 自带的日志 logback。 在 Spring Boot 中,logback 是基于 slf4j 实现的。


三、日志级别

日志级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR

如果设置为 WARN ,则低于 WARN 的信息都不会输出。
同理,当我们指定日志级别为 INFO 级别,那么 TRACE、DEBUG 级别的日志就不会被输出打印。

Spring Boot 中默认配置 ERROR、WARN 和 INFO 级别的日志输出到控制台。


四、logback 日志使用方式

方式一:

引入logback依赖:

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

但是实际开发中不需要直接添加该依赖。spring-boot-starter 包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。

示例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class LogApplication {

    public static void main(String[] args) {
        Logger logger =LoggerFactory.getLogger(LogApplication.class);
        SpringApplication.run(LogApplication.class, args);
        logger.debug("This is a debug message");//注意 spring 默认日志输出级别为 info 所以默认情况下 这句不会打印到控制台
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
    }
}

运行日志:

2019-07-10 23:51:49.225  INFO 3906 --- [           main] com.fishpro.log.LogApplication           : Started LogApplication in 1.688 seconds (JVM running for 2.317)
2019-07-10 23:51:49.226  INFO 3906 --- [           main] com.fishpro.log.LogApplication           : This is an info message
2019-07-10 23:51:49.227  WARN 3906 --- [           main] com.fishpro.log.LogApplication           : This is a warn message
2019-07-10 23:51:49.227 ERROR 3906 --- [           main] com.fishpro.log.LogApplication           : This is an error message

要想 debug 级别的日志能打印出来,就得配置日志级别。
默认是不需要单独配置 logback 依赖的,因为依赖包已经配置好了。


方式二:

每次都要写这行代码 Logger logger =LoggerFactory.getLogger(类名.class); ,觉得麻烦的话,也有下面这种使用方法:

  • 添加 lombok 的依赖 org.projectlombok:lombok
  • 安装 lombok 的依赖
  • 代码:
    在这里插入图片描述
  • 可以使用{} 占位符来拼接字符串,而不需要使用““+””来连接字符串。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值