概论
⽇志有什么⽤?
发现和定位问题之外,我们还可以通过⽇志实现以下功能:
- 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。
- 记录系统的操作⽇志,⽅便数据恢复和定位操作⼈
- 记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持。
以上这些都是⽇志提供的⾮常实⽤的功能。
自定义日志打印
那么如何自定义日志?
开发者⾃定义打印⽇志的实现步骤:
- 在程序中得到⽇志对象。(日志工程得到日志对象)
- 使⽤⽇志对象的相关语法输出要打印的内容(通过日志对象提供的打印方法实现打印)
日志级别
- ⽇志级别可以帮你筛选出重要的信息。
- ⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。
⽇志级别的分类:
- trace:微量,少许的意思,级别最低;(级别最低)
- debug:需要调试时候的关键信息打印;(调试日志级别)
- info:普通的打印信息(默认⽇志级别);(普通日志级别)
- warn:警告,不影响使⽤,但需要注意的问题;(警告日志级别)
- error:错误信息,级别较⾼的错误⽇志信息;(错误日志级别)
- fatal:致命的,因为代码异常导致程序退出执⾏的事件。(致命的日志级别:只有系统奔溃才会输出)
如何设置日志级别:
⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可。
#设置日志级别
logging.level.root=error
系统对日志进行了筛选。将业务不需要的日志级别进行屏蔽。
好处多多。日志级别可以在众多日志中快速找到对应的消息。从而进行针对性处理。
根据目录设置目录级别。
#给Controller 文件夹单独日志级别
logging.level.com.example.demo.controller=debug
为什么Spring Boot可以打印日志?
因为Spring Boot 内置了两个日志框架:SLF4J(让开发者使用和调用的框架)+LogBack(底层实现日志相关操作的框架)
在程序中得到⽇志对象
Logger系统提供的API接口,log模式,调用系统的API进行自定义。
@RestController
public class LogController {
//得到日志对象
private static Logger log= LoggerFactory.getLogger(LogController.class);
@RequestMapping("/log")
public void log(){
//打印日志
String msg="今天周一";
log.trace("trace---->"+msg);
log.debug("debug---->"+msg);
log.info("info---->"+msg);
log.warn("warn--->"+msg);
log.error("error--->"+msg);
}
}
日志的持久化(保存)
将日志保存到文件或磁盘。
做法:
1.设置日志保存路径
2.设置日志保存文件名
细节:
logging会有存储大小的限制10M,超过这个值会截断然后从新起一个文件保存。
lombok
装lombok的插件(重要)
Lombok的使用
注解 | 作⽤ |
---|---|
@Getter | ⾃动添加 getter ⽅法 |
@Setter | ⾃动添加 setter ⽅法 |
@ToString | ⾃动添加 toString ⽅法 |
@EqualsAndHashCode | ⾃动添加 equals 和 hashCode ⽅法 |
@NoArgsConstructor | ⾃动添加⽆参构造⽅法 |
@AllArgsConstructor | ⾃动添加全属性构造⽅法,顺序按照属性的定义顺序 |
@NonNull | 属性不能为 null |
@RequiredArgsConstructor | ⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需 |
无需去写set和get方法
@Getter
@Setter
public class student {
private int id;
private String name;
private String password;
public static void main(String[] args) {
student student=new student();
student.setId(1);
int i= student.getId();
System.out.println(i);
}
}
@Getter+@Setter+@ToString+…=@Data
注解 | 作⽤ |
---|---|
@Data | @Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor |
注解 | 作⽤ |
---|---|
@Slf4j | 添加⼀个名为 log 的⽇志,使⽤ slf4j |
lombok的实现原理