目录
- 我们现实生活中,我们希望做任何事情都有迹可循,尤其在错误排除方面,所以引入了日志,是为了记录
- 日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗?答案是否定的,写程序不是买彩票,不能完全靠猜,因此日志对于我们来说,最主要的用途就是排除和定位问题。
除了发现和定位问题之外,我们还可以通过日志实现以下功能
- 记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。
- 记录系统的操作日志,方便数据恢复和定位操作人。
- 记录程序的执行时间,方便为以后优化程序提供数据支持。
日志真实使用案例:
关键节点上的关键数据日志记录举例:例如,比如咱们的教务系统,在注册时候不止要在教务系统添加一条用户记录,同时也会给比特论坛添加一条一模一样的用户记录,这样做的目的是为了实现一次注册,多处使用的目的。不需要用户在两边系统注册了,等于在程序中以极低的成本实现的用户数据的同步,但这样设计有一个致命的问题,用户在教务系统注册信息的时候,如果论坛挂了,那么用户的注册行为就会失败?因为用户在注册的时候需要同步注册到论坛系统,但论坛现在挂了,这个时候怎么办呢?
最简单的解决方案,教务系统在注册的时候,不管论坛是否注册成功,都给用户返回成功,那这个时候如果论坛注册失败了怎么办?非常简单,如果注册失败了,记录一下日志,等论坛恢复正常之后,把日志给论坛的管理人员,让他手动将注册失败的用户同步到论坛系统,这样就最低成本的解决了问题。这就是日志的重要作用。
Spring Boot 项目在启动的时候默认就有日志
通过上述日志信息我们能发现以下 3 个问题:
- Spring Boot 内置了日志框架(不然也输出不了日志)。
- 默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?
- 日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?
Spring内置的日志
- Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志。
我们通过自己调用日志对象来输出日志
一种方便打印的日志格式
日志的级别
- trace:微量,少许的意思,级别最低;
- info:普通的打印信息;
- debug:需要调试时候的关键信息打印;
- warn:警告,不影响使用,但需要注意的问题;
- error:错误信息,级别较高的错误日志信息;
- fatal:致命的,因为代码异常导致程序退出执行的事件。
- 而日志分级大概的道理也是一样的,有了日志级别之后就可以过滤自己想看到的信息了,比如设置日志级别为 error,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者的信息筛选时间。
如何修改显示日志的级别
在配置文件中去修改
- 如果想修改全局的用 root: 日志级别
- 日志的输出级别,默认是 info,就是我们不做任何修改
- 日志持久化,就是讲日志信息存储到文件中,可以方便我们查看
- 为什么有日志,其最大的作用就是帮我们排除错误,让我们程序发生了什么变得有迹可循,问别人的时候最好带上现象+日志
- 明确在SpringBoot中如何使用日志(我们自己如何使用日志=调用日志对象+log.打印日志信息)其中我们可以使用{}这种方式来方便我们打印日志信息
- 日志级别 ,可以通过设置显示日志的级别来排除那些不想看到的日志
- 把日志放到文件中,做到日志持久化存储