Spring Boot日志

一,日志是什么

日志我们在一开始的学习中就有了解,一开始我们就已经使用过了System.out.print来打印日志了。但在项目中这种肯定满足不了。就需要一些专门的日志框架来达到我们的要求。

1.1日志的用途

1.系统监控

我们在这里可以设置不同的值,在达到一定程度的超过阈值之后,进行报警,这也是很常见的需求。

2.数据采集

数据统计,比如网页的访问人数之类的,对公司做数据有很大的帮助。

推荐排序:也就是大数据的整合,通过算法来给用户做出推荐。

二,日志使用

在spring boot启动的时候也有日志,意思也就是图中这些:

这些就是日志的一些基础信息,来做分别。

1.时间⽇期:精确到毫秒

  1. ⽇志级别:ERROR,WARN,INFO,DEBUG或TRACE

  2. 进程ID

  3. 线程名

  4. Logger名(通常使⽤源代码的类名)

  5. ⽇志内容

三,SLF4J框架介绍

SLF4J也就是其他日志框架的门面,为日志服务提供了统一的接口。如果不引入门面,这样就需要一环套一环很麻烦,需要依赖很多,维护起来还特别麻烦,一个错了要一个一个去慢慢维护。

引入之后,有统一的接口,只需要维护一套日志文件配置就OK了,引入之后的样子:

总的来说,SLF4J使你的代码独⽴于任意⼀个特定的⽇志API,这是⼀个对于开发API的开发者很好的思想。

四,日志级别

FATAL:致命信息,表⽰需要⽴即被处理的系统级错误.

ERROR:错误信息,级别较⾼的错误⽇志信息,但仍然不影响系统的继续运⾏

WARN:警告信息,不影响使⽤,但需要注意的问题

INFO:普通信息,⽤于记录应⽤程序正常运⾏时的⼀些信息,例如系统启动完成,请求处理完成等。

DEBUG:调试信息,需要调试时候的关键信息打印。

TRACE:追踪信息,⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)

日志级别的顺序:

级别越高,收到的消息越少,fatal基本不会有信息,因为有就基本不会通过启动程序。最后面那个也基本不会,因为不会影响程序。

3.1日志级别的使用

如果你还是必须打印那些日志,这边就可以使用代码来实现:

java 复制代码
public String printLog() {
 logger.trace("================= trace ===============");
 logger.debug("================= debug ===============");
 logger.info("================= info ===============");
 logger.warn("================= warn ===============");
 logger.error("================= error ===============");
 return "打印不同级别的⽇志" ;
}

但这样打印出来,就只有info,warn,error级别的日志,因为日志默认输出是info,只会打印大于等于它的,所以打印了这三个。

3.2日志文件分割

需要在spring boot配置文件里面来写

porperties配置:

java 复制代码
logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}.%i
logging.logback.rollingpolicy.max-file-size=1KB

yml配置:

java 复制代码
logging:
 logback:
     rollingpolicy:
         max-file-size: 1KB
         file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

这种就是配置当日志大于1kb的时候就分割,很小,在实际应用中我们需要调大一点点。

3.3日志格式

idea专业版不用配置,如何下载在前面几篇博客提到过

社区版配置:

  1. %clr(表达式){颜⾊}

设置输⼊⽇志的颜⾊⽀持颜⾊有以下⼏种:

• blue

• cyan

• faint

• green

• magenta

• red

• yellow

  1. %d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}

⽇期和时间--精确到毫秒

  1. %5p 显示日志级别ERROR,MARN,INFO,DEBUG,TRACE.

  2. %t 线程名.%c 类的全限定名.%M method.%L 为⾏号.%thread 线程名称.%m 或者%msg 显⽰输出消息.%n 换⾏符

  3. %5 若字符⻓度⼩于5,则右边⽤空格填充.%-5 若字符⻓度⼩于5,则左边⽤空格填充.

%.15 若 字符⻓度超过15,截去多余字符.%15.15 若字符⻓度⼩于15,则右边⽤空格填充.若字符⻓度超 过15,截去多余字符

四,简单的日志使用

每次都使用那个LoggerFactory.getLogger(xxx.class)很繁琐。使用lombok提供了方便的方法:

  1. 添加lombok框架⽀持

  2. 使⽤@slf4j 注解输出⽇志。

添加lombok依赖:

java 复制代码
<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <optional>true</optional>
</dependency>

输出日志

java 复制代码
@Slf4j
@RestController
public class LogController {
     public void log(){
     log.info("--------------要输出⽇志的内容----------------");
 }
}

这样就可以简单输出日志了。lombok提供的@Slf4j注解和log对象快速的打印⾃定义⽇志。

相关推荐
Kisorge4 分钟前
【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数
c语言·开发语言
路在脚下@37 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
森屿Serien40 分钟前
Spring Boot常用注解
java·spring boot·后端
轻口味1 小时前
命名空间与模块化概述
开发语言·前端·javascript
苹果醋32 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
晓纪同学2 小时前
QT-简单视觉框架代码
开发语言·qt
威桑2 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
Hello.Reader2 小时前
深入解析 Apache APISIX
java·apache
飞飞-躺着更舒服2 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb