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对象快速的打印⾃定义⽇志。

相关推荐
ModelBulider4 分钟前
九、HttpMessageConverter
java·开发语言·后端·spring·springmvc
晨曦_子画5 分钟前
使用 Regex 在 Java 中使用 Logstash LogBack 屏蔽日志
java
就叫飞六吧12 分钟前
电商系统表的1-n如何设计?情景分析
java·后端·spring
易辰君13 分钟前
【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解
开发语言·爬虫·python
亥时科技15 分钟前
政企学习考试系统(源码+文档+部署+讲解)
java·数据库·开源·源代码管理
祁思妙想19 分钟前
《JavaEE进阶》----21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)>
java·后端·spring
祁思妙想21 分钟前
《JavaEE进阶》----20.<基于Spring图书管理系统①(登录+添加图书)>
java·spring·java-ee
Coding~21 分钟前
攻防世界38-FlatScience-CTFWeb
开发语言·sql·安全·web安全·php
nrsc24 分钟前
[实用小代码java]-如何将对象存储服务器上的文件下载到客户端
java·服务器·oss·文件下载·octet-stream