文章目录
什么是日志
在计算机领域,日志是一个记录了发生在运行中的操作系统或其他软件中的事件,或者记录了在网络聊天软件的用户之间发送的消息。
通常情况下,系统日志是用户可以直接阅读的文本文件,其中包含了一个时间戳和一个信息或者子系统所特有的其他信息。任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索。
前面我们多多少少都用过日志,并且通过日志来解决我们代码中遇到的问题。像 System.out.println
打印信息就可以看作是一种简单的日志,通过日志我们可以很快的定位到错误出现的位置或者问题出现的详细信息,日志对我们排查问题来说是非常重要的。
虽然 System.out.println
这种形式的日志可以解决问题,但是随着项目复杂度的提升,我们对于日志的打印也有了更高的需求,而不仅仅是定位排查问题。
一些情况,我们往往需要知道程序运行的过程和操作记录,通过这些记录往往能够帮助我们快速的解决遇到的问题。
日志的用途
通过前⾯的学习,我们知道⽇志主要是为了发现问题,分析问题,定位问题的,但除此之外,⽇志还有很多⽤途:
- 系统监控
监控现在⼏乎是⼀个成熟系统的标配,我们可以通过⽇志记录这个系统的运⾏状态,每⼀个⽅法的响应时间,响应状态等,对数据进⾏分析,设置不同的规则,超过阈值时进⾏报警。⽐如统计⽇志中关键字的数量,并在关键字数量达到⼀定条件时报警,这也是⽇志的常⻅需求之⼀ - 数据采集
数据采集是⼀个⽐较⼤的范围,采集的数据可以作⽤在很多⽅⾯,⽐如数据统计,推荐排序等
- 数据统计:统计⻚⾯的浏览量(PV),访客量(UV),点击量等,根据这些数据进⾏数据分析,优化公司运营策略
- 推荐排序:⽬前推荐排序应⽤在各个领域,我们经常接触的各⾏各业很多也都涉及推荐排序,⽐如购物,⼴告,新闻等领域。数据采集是推荐排序⼯作中必须做的⼀环,系统通过⽇志记录用户的浏览历史,停留时⻓,算法⼈员通过分析这些数据,训练模型,给用户做推荐
- 日志审计
随着互联⽹的发展,众多企业的关键业务越来越多的运⾏于⽹络之上。⽹络安全越来越受到⼤家的关注,系统安全也成为了项⽬中的⼀个重要环节,安全审计也是系统中⾮常重要的部分。国家的政策法规、⾏业标准等都明确对⽇志审计提出了要求。通过系统⽇志分析,可以判断⼀些⾮法攻击,⾮法调⽤,以及系统处理过程中的安全隐患
日志的使用
当我们启动 SpringBoot 项目的时候其实就会存在日志。
并且通过观察我们可以发现:日志的输出内容包含很多信息,包括时间、在哪个类中打印的和描述信息等等。
就是通过这些日志,我们能根据时间和所属类很快的定位到问题出现的位置。这些是默认存在的会打印的日志,那么我们如何打印出我们自己想要的日志呢?
如何打印日志
Spring 中默认内置了一个日志框架——Slf4j,我们可以通过这个框架来打印出我们想要的日志。
要想打印日志,首先需要获取到日志对象。
Logger 对象的所属包是 org.slf4j
包。
这个 Logger
对象是通过 LoggerFactory
工厂类中的 getLoger
获取的。
private static final Logger logger = LoggerFactory.getLogger(LoggerController.class);
注意:getLogger 方法中的参数需要传递一个类对象,用来知道是哪个类输出的日志,当遇到问题时,我们可以根据这个所属类更快的定位到问题所在位置。
当获取到 Logger
日志对象之后,我们就可以通过 Logger
类当中的方法打印出对应的日志。
logger 类中有很多方法,但是主要打印日志的方法就是 trace()、deBug()、info()、warn()、error()
方法,那么这些方法有什么区别呢?后面再为大家解释,这里我们先使用。一个方法会有很多种的重载方法,我们可以根据需要选择使用哪种传递参数的方法。
package com.example.logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.