1、日志级别
日志级别 | 描述 |
---|---|
OFF | 关闭:最高级别,不输出日志。 |
FATAL | 致命:用于输出可能会导致应用程序终止(崩溃)的错误。 |
ERROR | 错误:用于输出程序的错误(这些错误不会导致程序崩溃)。 |
WARN | 警告:用于输出警告信息,提示出可能出现的问题。 |
INFO | 信息:用于输出应用运行过程的详细信息。 |
DEBUG | 调试:用于输出更细致的对调试应用有用的信息。 |
TRACE | 跟踪:用于输出更细致的程序运行轨迹。 |
ALL | 所有:用于输出所有级别信息(包括自定义级别)。 |
2、日志格式变量介绍
-
%level:表示输出日志级别 ;
- %date:表示日志发生时的时间,可缩写为 %d;
- %logger:用于输出 Logger 的类路径,包名+类名,{n}限定了输出长度,如果输出长度不够,尽可能显示类名、压缩包名;
- %thread:当前线程名;
- %M:日志发生时的方法名字;
- %L:日志调用所在代码行,线上运行时不建议使用此参数,因为获取代码行对性能有消耗;
- %m:日志、消息;
- %n:日志换行。
3、规范
3.1、不使用下面的拼接方式
log.info("username: " + username + " IP: "+ ip + "platform: " + platform);
当日志级别为 WARN 或 ERROR 时,该日志不打印,但仍然会进行字符串拼接,浪费资源。
应改为下面占位符方式
log.info("username: {} IP: {} platform: {}", username, ip, platform);
3.2、完整的堆栈信息
当发生异常时要将完整的堆栈信息打印出来,这样才能更准确的定位问题,而下面这种方式只会打印基本的错信息,比如只会告诉你发生了空指针,但你根本不知道发生在了哪里。
log.error("xxx错误:{}", e.getMessage());
正确的方式
log.error("xxx错误:{}", e.getMessage(), e);
3.3使用@slf4j
推荐使用 Lombok 框架的 @Slf4j 注解开启日志,减少样板代码的编写提升效率,还能避免书写错误导致的问题
未完待续。。