一,日志是什么
日志我们在一开始的学习中就有了解,一开始我们就已经使用过了System.out.print来打印日志了。但在项目中这种肯定满足不了。就需要一些专门的日志框架来达到我们的要求。
1.1日志的用途
1.系统监控
我们在这里可以设置不同的值,在达到一定程度的超过阈值之后,进行报警,这也是很常见的需求。
2.数据采集
数据统计,比如网页的访问人数之类的,对公司做数据有很大的帮助。
推荐排序:也就是大数据的整合,通过算法来给用户做出推荐。
二,日志使用
在spring boot启动的时候也有日志,意思也就是图中这些:
这些就是日志的一些基础信息,来做分别。
1.时间⽇期:精确到毫秒
-
⽇志级别:ERROR,WARN,INFO,DEBUG或TRACE
-
进程ID
-
线程名
-
Logger名(通常使⽤源代码的类名)
-
⽇志内容
三,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专业版不用配置,如何下载在前面几篇博客提到过
社区版配置:
- %clr(表达式){颜⾊}
设置输⼊⽇志的颜⾊⽀持颜⾊有以下⼏种:
• blue
• cyan
• faint
• green
• magenta
• red
• yellow
- %d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}
⽇期和时间--精确到毫秒
-
%5p 显示日志级别ERROR,MARN,INFO,DEBUG,TRACE.
-
%t 线程名.%c 类的全限定名.%M method.%L 为⾏号.%thread 线程名称.%m 或者%msg 显⽰输出消息.%n 换⾏符
-
%5 若字符⻓度⼩于5,则右边⽤空格填充.%-5 若字符⻓度⼩于5,则左边⽤空格填充.
%.15 若 字符⻓度超过15,截去多余字符.%15.15 若字符⻓度⼩于15,则右边⽤空格填充.若字符⻓度超 过15,截去多余字符
四,简单的日志使用
每次都使用那个LoggerFactory.getLogger(xxx.class)很繁琐。使用lombok提供了方便的方法:
-
添加lombok框架⽀持
-
使⽤@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对象快速的打印⾃定义⽇志。