SpringBoot【日志文件的打印与输出】

这篇具有很好参考价值的文章主要介绍了SpringBoot【日志文件的打印与输出】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍎一.日志文件

springboot 日志打印,JavaEE进阶,spring,java,前端,jvm

🍒1.1 日志的作用

⽇志是程序的重要组成部分它在我们运行检查程序时用来发现和定位问题

除了发现和定位问题之外,我们还可以通过⽇志实现以下功能:
● 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户

● 记录系统的操作⽇志,⽅便数据恢复和定位操作⼈

● 记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持

以上这些都是⽇志提供的⾮常实⽤的功能

⽇志真⽤案例:
关键节点上的关键数据⽇志记录举例:例如,⽐抖音,在注册时候不⽌要在抖音添加⼀条⽤户记录,同时也会给抖音极速版添加⼀条⼀模⼀样的⽤户记录,这样做的⽬的是为了实现⼀次注册,多处使⽤的⽬的。不需要⽤户在两边系统注册了,等于在程序中以极低的成本实现的⽤户数据的同步,但这样设计有⼀个致命的问题,⽤户在抖音注册信息的时候,如果抖音挂了,那么⽤户的注册⾏为就会失败?因为⽤户在注册的时候需要同步注册到抖音极速版,但抖音极速版现在挂了,这个时候怎么办呢?

解决方案:
最简单的解决⽅案,抖音在注册的时候,不管抖音极速版是否注册成功,都给⽤户返回成功,那这个时候如果抖音极速版注册失败了怎么办?⾮常简单,如果注册失败了,记录⼀下⽇志,等抖音极速版系统恢复正常之后,把⽇志给抖音极速版的管理⼈员,让他⼿动将注册失败的⽤户同步到抖音极速版,这样就最低成本的解决了问题。这就是⽇志的重要作⽤

🍒1.2 怎样查看到日志信息

其实在我们使用Spring Boot框架运行时我们就已经在控制台中看到了日志的打印
springboot 日志打印,JavaEE进阶,spring,java,前端,jvm
以上内容就是 Spring Boot 输出的控制台⽇志信息

通过上述⽇志信息我们能发现以下 3 个问题:
●Spring Boot 内置了⽇志框架(不然也输出不了⽇志)

●默认情况下,输出的⽇志并⾮是开发者定义和打印的,那开发者怎么在程序中⾃定义打印⽇志呢?

●⽇志默认是打印在控制台上的,⽽控制台的⽇志(内存)是不能被保存的,那么怎么把⽇志永久的保存下来呢

下⾯我们⼀起来找寻这些问题的答案

🍎二. 打印日志

🍒2.1 自定义打印日志

开发者⾃定义打印⽇志的实现步骤:

●在程序中得到⽇志对象

●使⽤⽇志对象的相关语法输出要打印的内容

注意:Logger 对象是属于 org.slf4j 包下的,不要导⼊错包。到问题类

  private final static Logger log = LoggerFactory.getLogger(类名.class)

⽇志⼯⼚需要将每个类的类型传递进去,这样我们才知道⽇志的归属类,才能更⽅便、更直观的定位

@Controller
@ResponseBody  //动态页面
public class UserController {
    //1. 先得到日志对象(来自 slf4j)
    //通过日志工厂的getLogger()方法获取需要打印日志类中的对象

    private final static Logger log = LoggerFactory.getLogger(UserController.class);
    @RequestMapping("/sayhi")
    public void sayHi(){
        log.trace("我是trace 微量级比");
        log.debug("我是 debug 调试日志");
        log.info("我是 info 普通信息日志");
        log.warn("我是 warn 警告日志");
        log.error("我是 error 错误日志");
        // fatal 是导致程序崩坏的(致命bug)程序会自动去打印的
    }
}

我们在网页127.0.0.1:8080/sayhi 之后就可以在控制台看到打印出的日志
springboot 日志打印,JavaEE进阶,spring,java,前端,jvm

🍒2.2 ⽇志格式说明

springboot 日志打印,JavaEE进阶,spring,java,前端,jvm
我们发现我们应该在打印台中看到日志的信息只有info warn error 三个级别,这是因为spring boot默认的日志打印级别为info
日志的级别是怎样的呢,记下了我们就要开始认识日志的级别了

🍎三.日志级别

🍒3.1 日志级别的作用

● ⽇志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间

● ⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求

🍒3.2 日志级别的分类与使用

⽇志的级别分为:

●trace:微量,少许的意思,级别最低

●debug:需要调试时候的关键信息打印

●info:普通的打印信息(默认⽇志级别)

●warn:警告,不影响使⽤,但需要注意的问题

●error:错误信息,级别较⾼的错误⽇志信息

●fatal:致命的,因为代码异常导致程序退出执⾏的事件

springboot 日志打印,JavaEE进阶,spring,java,前端,jvm
越往上接收到的消息就越少,如设置了 warn 就只能收到 warn、error、fatal 级别的⽇志了

🍒3.3 日志级别设置(重要)

⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可,如下所示:

# 设置全局日志级别
logging.level.root=info
@Controller
@ResponseBody  //动态页面
public class UserController {
    //1. 先得到日志对象(来自 slf4j)
    //通过日志工厂的getLogger()方法获取需要打印日志类中的对象

    private final static Logger log = LoggerFactory.getLogger(UserController.class);
    @RequestMapping("/sayhi")
    public void sayHi(){
        log.trace("我是trace 微量级比");
        log.debug("我是 debug 调试日志");
        log.info("我是 info 普通信息日志");
        log.warn("我是 warn 警告日志");
        log.error("我是 error 错误日志");
        // fatal 是导致程序崩坏的(致命bug)程序会自动去打印的
    }
}

清除掉配置⽂件中的⽇志设置,观察控制台输⼊的⽇志级别,得到以下结论,⽇志的输出级别,默认是 info
springboot 日志打印,JavaEE进阶,spring,java,前端,jvm

注意日志的定位只能在目录文件中,不能定位到类上
springboot 日志打印,JavaEE进阶,spring,java,前端,jvm

springboot 日志打印,JavaEE进阶,spring,java,前端,jvm

🍎四.lombok(简便型日志输出)

每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这⾥讲⼀种更好⽤的⽇志输出⽅式,使⽤ lombok 来更简单的输出

  1. 添加 lombok 框架⽀持
  2. 使⽤ @slf4j 注解输出⽇志

🍒4.1 添加 lombok 依赖

<dependency>
<groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.20</version>
 <optional>true</optional>
</dependency>

🍒4.2 输出⽇志

@Controller
@ResponseBody
@Slf4j
public class UserService {
//    Logger log = LoggerFactory.getLogger(UserService.class);
    @RequestMapping("/sayhi2")
    public void sayHi2(){
        log.trace("我是 trace");
        log.debug("我是 debug");
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");
    }
}

注意:使⽤ @Slf4j 注解,在程序中使⽤ log 对象即可输⼊⽇志,并且只能使⽤ log 对象才能输出,这是 lombok 提供的对象名

🍒4.3 lombok工作原理

Lombok 的作⽤如下图所示:
lombok通过@Slf4j在运行时会生成一个private final static Logger log = LoggerFactory.getLogger(UserController.class)类似这个对象
springboot 日志打印,JavaEE进阶,spring,java,前端,jvm

🍒4.4 lombok常见的注解

基本注解

注解 作⽤
@Getter ⾃动添加 getter ⽅法
@Setter ⾃动添加 setter ⽅法
@ToString ⾃动添加 toString ⽅法
@EqualsAndHashCode ⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor ⾃动添加⽆参构造⽅法
@AllArgsConstructor ⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull 属性不能为 null
@RequiredArgsConstructor ⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需

组合注解

注解 作⽤
@Data @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor

⽇志注解

注解 作⽤
@Slf4j 添加⼀个名为 log 的⽇志,使⽤ slf4j

🍎五.日志持久化(存储日志到硬盘)

以上的⽇志都是输出在控制台上的,然⽽在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后追溯问题,把⽇志保存下来的过程就叫做持久化.想要将⽇志进⾏持久化,只需要在配置⽂件中指定⽇志的存储⽬录或者是指定⽇志保存⽂件名之后,Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了

配置⽇志⽂件的保存路径目录

# 设置日志保存的目录(日志存储大小是24kb,大于会默认生成(1)(2)这种类型名文件)
#logging.file.path=D:/Data/

logging.file.path=D:\\Data\\

配置日志文件的⽂件名


# 设置日志保存的名称
logging.file.name=D:/Data/spring-boot.log

springboot 日志打印,JavaEE进阶,spring,java,前端,jvm文章来源地址https://www.toymoban.com/news/detail-756757.html

到了这里,关于SpringBoot【日志文件的打印与输出】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot设置日志输出级别及Logback日志工具输出到文件

    1.SpringBoot设置日志输出级别 越高包含的就越多,输出的信息也就越多 2.Logback日志工具使用 1.首先需要把你yaml文件里面关于日志的配置去掉,避免冲突报错 2.在resource目录下创建logback-spring.xml文件 2.运行后指定路径就会生成.log文件 3.此时一般默认只有info信息写入,其他两个

    2024年02月16日
    浏览(48)
  • springboot 下mybatis-plus 如何打印sql日志和参数到日志文件

    网上很多说法打印sql日志的方法在application.properties配置文件中 但是上述配置只能将sql日志打印到控制台,无法打印到日志文件中 参考下面这个文档,将sql日志打印到日志文件中 https://www.ius7.com/a/305 1:设置mybatisplus包下的日志级别为DEBUG; 2:设置项目mapper目录的日志级别为DE

    2024年02月14日
    浏览(40)
  • JavaEE进阶(6)SpringBoot 配置文件(作用、格式、properties配置文件说明、yml配置文件说明、验证码案例)

    接上次博客:JavaEE进阶(5)Spring IoCDI:入门、IoC介绍、IoC详解(两种主要IoC容器实现、IoC和DI对对象的管理、Bean存储、方法注解 @Bean)、DI详解:注入方式、总结-CSDN博客 目录 配置文件作用 SpringBoot配置文件  配置文件的格式 properties 配置文件说明 properties 基本语法 读取配置

    2024年01月23日
    浏览(50)
  • springboot整合mybatis-plus的sql输出到日志文件上

    springboot整合mybatis-plus的sql输出到日志文件上 在平时的日常开发中,我们希望sql打印在控制台上,只要如下配置即可 但是在生产中如果希望sql输出到日志文件上,有几种方式可以实现,下面我就用项目中常用的两种方式(不引入第三方依赖) 一、修改yml文件配置即可 缺点:

    2024年02月01日
    浏览(40)
  • 学习SpringBoot使用slf4j日志并输出到文件中

    再使用前,先了解一下介绍,否则你也不会用! 1、日志级别 SLF4J将日志分为trace、debug、info、warn、error五个级别,每个级别对应记录不同的日志,对应不同的使用场景。 日志级别从低到高分为 TRACE DEBUG INFO WARN ERROR FATAL 如果设置为 WARN ,则低于 WARN 的信息都不会输出 一般设

    2024年02月06日
    浏览(34)
  • 【JavaEE】SpringBoot的日志

    目录 日志作用 SpringBoot日志框架 日志打印 日志级别 类型 作用 修改级别 日志永久化 配置日志文件目录 配置日志文件名 简化日志打印和永久化——lombok 问题定位:可以帮助开发人员快速找到问题出现的位置 系统监控:可以把系统的运行情况、性能调优等信息记录下来,方

    2023年04月27日
    浏览(23)
  • 【JavaEE & Spring】SpringBoot 日志

    为什么要学习日志 对于平常来说, 我们就在使⽤ System.out.print 来打印⽇志了 随着项⽬的复杂度提升, 我们对⽇志的打印也有了更⾼的需求, ⽽不仅仅是定位排查问题. 有时候我们需要将日志持久化, 进行对应的数据分析, 但是 System.out.print 不能很好的满⾜我们的需求, 我们就需要

    2024年01月25日
    浏览(25)
  • 【JavaEE进阶】SpringBoot项目的创建

    Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序的开源框架 .它简化了 Spring 应用程序的配置和部署过程,使开发者能够更专注于业务逻辑的实现。 Spring Boot 提供了许多开箱即用的功能,包括: 自动配置:Spring Boot 根据应用程序的依赖关系自动配置各种组件,无需手

    2024年02月13日
    浏览(66)
  • springboot打印sql日志

    相信大家在项目调试的时候都遇到过最后数据库查询、或者插入的数据与自己所想的不符,但是又不知道具体哪里出问题了。 下面就教大家如何打印mybatis最终生成并执行的sql。 我们直接搜索org.apache.ibatis.logging.jdbc包下的ConnectionLogger、PreparedStatementLogger、ResultSetLogger等类。

    2023年04月11日
    浏览(30)
  • Springboot切面打印日志

    切面打印完整日志,以下代码用于扫描@RestController 注解修饰的接口,并打印相关日志

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包