目录

为什么要引入日志

Spring中日志的使用 

 Spring内置的日志

日志的级别 

如何做到日志持久化

小结 

为什么要引入日志

我们现实生活中,我们希望做任何事情都有迹可循,尤其在错误排除方面,所以引入了日志,是为了记录日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗?答案是否定的,写程序不是买彩票,不能完全靠猜,因此日志对于我们来说,最主要的用途就是排除和定位问题。

除了发现和定位问题之外,我们还可以通过日志实现以下功能

记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。记录系统的操作日志,方便数据恢复和定位操作人。记录程序的执行时间,方便为以后优化程序提供数据支持。

日志真实使用案例: 关键节点上的关键数据日志记录举例:例如,比如咱们的教务系统,在注册时候不止要在教务系统添加一条用户记录,同时也会给比特论坛添加一条一模一样的用户记录,这样做的目的是为了实现一次注册,多处使用的目的。不需要用户在两边系统注册了,等于在程序中以极低的成本实现的用户数据的同步,但这样设计有一个致命的问题,用户在教务系统注册信息的时候,如果论坛挂了,那么用户的注册行为就会失败?因为用户在注册的时候需要同步注册到论坛系统,但论坛现在挂了,这个时候怎么办呢? 最简单的解决方案,教务系统在注册的时候,不管论坛是否注册成功,都给用户返回成功,那这个时候如果论坛注册失败了怎么办?非常简单,如果注册失败了,记录一下日志,等论坛恢复正常之后,把日志给论坛的管理人员,让他手动将注册失败的用户同步到论坛系统,这样就最低成本的解决了问题。这就是日志的重要作用。  

Spring中日志的使用 

Spring Boot 项目在启动的时候默认就有日志

通过上述日志信息我们能发现以下 3 个问题:

Spring Boot 内置了日志框架(不然也输出不了日志)。默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?

 Spring内置的日志

Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志。

我们通过自己调用日志对象来输出日志

 一种方便打印的日志格式

 

 

日志的级别 

trace:微量,少许的意思,级别最低;info:普通的打印信息;debug:需要调试时候的关键信息打印;warn:警告,不影响使用,但需要注意的问题;error:错误信息,级别较高的错误日志信息;fatal:致命的,因为代码异常导致程序退出执行的事件。

 而日志分级大概的道理也是一样的,有了日志级别之后就可以过滤自己想看到的信息了,比如设置日志级别为 error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者的信息筛选时间。

如何修改显示日志的级别

在配置文件中去修改

 如果想修改全局的用 root: 日志级别日志的输出级别,默认是 info,就是我们不做任何修改  

如何做到日志持久化

 日志持久化,就是讲日志信息存储到文件中,可以方便我们查看

小结 

 为什么有日志,其最大的作用就是帮我们排除错误,让我们程序发生了什么变得有迹可循,问别人的时候最好带上现象+日志明确在SpringBoot中如何使用日志(我们自己如何使用日志=调用日志对象+log.打印日志信息)其中我们可以使用{}这种方式来方便我们打印日志信息日志级别 ,可以通过设置显示日志的级别来排除那些不想看到的日志把日志放到文件中,做到日志持久化存储

查看原文