目录
1.⽇志使⽤
在使用之前我们先来了解一下为什么要使用?
⽇志的⽤途
1.系统监控
我们可以通过⽇志记录这个系统的运⾏状态,对数据进⾏分析, 设置不同的规则, 超过阈值时进⾏报警。
2.数据采集
数据采集是⼀个⽐较⼤的范围, 采集的数据可以作⽤在很多⽅⾯, ⽐如数据统计, 推荐排序等。
3.⽇志审计
通过系统⽇志分析,可以判断⼀些⾮法攻击, ⾮法调⽤,以及系统处理过程中的安全隐患
⽇志使⽤
SpringBoot 内置了⽇志框架 Slf4j , 我们可以直接在程序中调⽤ Slf4j 来输出⽇志
1.在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory
2.⽇志对象的打印⽅法有很多种,我们可以先使⽤ info() ⽅法来输出⽇志
代码1-1:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/Logger")
@RestController
public class LoggerController {
private static Logger logger= LoggerFactory.getLogger(LoggerController.class);
@RequestMapping("/print")
public void print(){
logger.info("=======打印日志======");
}
}
结果:
注意:Logger 对象是属于 org.slf4j 包下的, 不要导⼊错包.
从上图可以看到,⽇志输出内容元素具体如下:
1.时间⽇期:精确到毫秒
2.⽇志级别
3.进程ID
4.线程名
5.Logger名(通常使⽤源代码的类名)
6.⽇志内容
2.⽇志级别
⽇志级别代表着⽇志信息对应问题的严重性, 为了更快的筛选符合⽬标的⽇志信息。
⽇志的级别从⾼到低依次为: FATAL、ERROR、WARN、INFO、DEBUG、TRACE
1.FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误
2.ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏
- WARN: 警告信息, 不影响使⽤, 但需要注意的问题
4.INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息,
5.DEBUG: 调试信息, 需要调试时候的关键信息打印.
6.TRACE: 追踪信息
注意:⽇志级别通常和测试⼈员的Bug级别没有关系
⽇志级别的使⽤
⽇志级别是开发⼈员⾃⼰设置的. 开发⼈员根据⾃⼰的理解来判断该信息的重要程度
代码2-1:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/Logger")
@RestController
public class LoggerController {
private static Logger logger= LoggerFactory.getLogger(LoggerController.class);
@RequestMapping("/level")
public void loggerLevel(){
logger.error("=======error======");
logger.warn("======warn======");
logger.info("======info======");
logger.debug("======debug======");
logger.trace("======trace======");
}
}
结果:
结果发现, 只打印了info, warn和error级别的⽇志
这与⽇志级别的配置有关, ⽇志的输出级别默认是 info级别, 所以只会打印⼤于等于此级别的⽇志, 也就 是info, warn和error.
3.⽇志配置
3.1配置⽇志级别
yml配置
logging: level: root: debug
整个程序(root)⽇志的输出级别设置为debug级别
(也可以修改root,为具体路径)
重新运⾏上述代码2-1, 观察结果
3.2⽇志持久化
以上的⽇志都是输出在控制台上的, 然⽽在线上环境中, 我们需要把⽇志保存下来, 以便出现问题之后追 溯问题. 把⽇志保存下来就叫持久化. ⽇志持久化有两种⽅式:
配置⽇志⽂件名
配置⽇志的存储⽬录
-
配置⽇志⽂件名
logging:
file:
name: logger/springboot.log
运行后:
2.配置⽇志⽂件的保存路径
这种⽅式只能设置⽇志的路径, ⽂件名为固定的spring.log
logging:
file:
path: D:/temp
运行后:
注意:
logging.file.name 和 logging.file.path 两个都配置的情况下, 只⽣效其⼀, 以 logging.file.name 为准
3.3配置⽇志⽂件分割
如果我们的⽇志都放在⼀个⽂件中, 随着项⽬的运⾏, ⽇志⽂件会越来越⼤, 需要对⽇志⽂件进⾏分割
⽇志框架也帮我们考虑到了这⼀点, 所以如果不进⾏配置, 就⾛⾃动配置
默认⽇志⽂件超过10M就进⾏分割
logging:
logback:
rollingpolicy:
max-file-size: 1KB
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
1.⽇志⽂件超过1KB就分割
2.分割后的⽇志⽂件名为: ⽇志名.⽇期.索引
样图:
4.更简单的⽇志输出
lombok提供的 @Slf4j 会帮我们提供⼀个⽇志对象 log, 我们直接使⽤就可以
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequestMapping("/Logger2")
@RestController
public class LoggerApplication2 {
@RequestMapping("/print2")
public void log2(){
log.info("--------------要输出⽇志的内容----------------");
}
}
以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞