常见的日志实现类,比如Log4j、Log4j2、Logback都统一规定了日志级别,在实际开发中我们应对不同情况下的日志用不同级别来写入到日志文件中。日志框架的日志级别一般有8个,日志级别由高到底依次为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,一般开发中常用到的有ERROR、WARN、INFO、DEBUG这四个日志级别。在日志实现类的配置文件(比如logback.xml)中可以指定日志级别开关,这个开关的粒度可以细化到具体某一个logger实例,logger只能把日志级别高于或等于logger实例设置的日志级别的日志打印到日志文件中。
1、日志级别
| 日志级别 | 说明 |
|---|---|
| OFF | 最高等级,当日志级别设置为OFF时将关闭所有日志记录。 |
| FATAL | 一般是程序出现重大错误,且严重程度将会导致应用程序直接退出。 |
| ERROR | 一般程序运行时出错,比如抛异常,调用接口失败等,可以将日志设置为ERROR打印,ERROR对应的情况虽然发生错误事件,但仍然不影响系统的。 |
| WARN | WARN日志的出现表示系统可能出现问题,也可能没有问题,但是也应引起关注。比如某个监控指标超过了一定的阈值,可以用WARN日志记录。 |
| INFO | INFO日志记录系统正常运行的状态,比如接口调用成功,某个关键逻辑执行完成。一般INFO日志不宜过多,否则产生过多的非关键的日志会占用磁盘空间。 |
| DEBUG | DEBUG日志一般记录的是调试信息,比如开发过程中预见了某个逻辑可能容易出问题,就多记一些DEBUG日志,方便开发和运维人员定位线上问题。 |
| TRACE | 作用跟DEBUG很像,一般不用。 |
| ALL | 最低等级的日志级别,当日志级别为ALL时所有日志都会被记录。 |
2、如何正确地使用日志级别
- ERROR:一般程序运行出错,但不至于程序直接退出的情况,可以将对应的日志信息用ERROR级别打印出来,比如调用接口失败、执行代码块走进异常处理块等。一般定位问题会首先grep ERROR级别的日志;
- WARN:程序运行中可能出现问题,也可能没有,或者将要出现问题,这时可以把一些标志性的日志用WARN记录,比如监控指标高于某一个阈值但没导致程序出错这种情况;
- INFO:这也是平常开发中很多人习惯使用的日志级别,用来记录程序正常运行时打印的日志,比如一个关键的代码块执行完毕可以用INFO日志记录执行完成。但也存在很多程序员只要不是错误日志都用INFO来记录,就会导致大量的INFO级别的日志写进日志文件中,会产生海量的无意义日志,可能会占用过多的磁盘空间影响系统性能;
- DEBUG:DEBUG级别的日志是为了给开发人员和运维人员定位网上问题提供故障检测和定位问题的帮助。因为线上问题的定位基本不可能让你远程连接IDE去debug单步调试,都是通过日志来排查,开发中提前预判到某个逻辑可能容易出问题,就在这个地方多记一些DEBUG日志。
参考
日志级别_日志级别记录规范
