日志级别及实践

​ 利用日志,我们不仅获取运行时程序信息来动态调试程序,还可以在突发事件发生时定位异常。作为开发人员,写出来的日志如果没有意义,难以对开发及运维起到日志该有的作用就说不过去了。

日志级别

​ 日志级别从低到高依次是ALL、TRACE、DEBUG 、INFO、WARN、ERROR 、FATAL 、OFF。等级越低输出的日志信息越详细,也就是说DEBUG级别的输出日志是包含了ERROR级别的输出日志的。

ALL		记录所有日志

TRACE	日志级别很低,很少使用。如果使用在生产环境中就成了代码异味

DEBUG	主要用于开发过程中打印运行信息

INFO	用于输出程序运行的重要信息或者感兴趣的信息

WARN	表明会出现潜在错误的情形,
		记录在这个级别的时间都可能会成为一个ERROR

ERROR	打印错误和异常信息。虽然程序出现了错误,但仍然可以继续运行

FATAL	重大错误,出现这种级别的事件会导致程序不能继续运行

OFF		不记录任何日志

实践

​ 日志不宜过多,也不宜过少,这看起来是一句废话,但却是十分重要的。如果太多,你可能在大半夜里解决突发问题时,看半天都找不到关键问题所在;如果太少,那么你获取到的异常信息就可能太少,过于模糊从而无从下手,比如异常A:java.lang.IndexOutOfBoundsException和异常B:IndexOutOfBoundsException:index 12 is greater than collection size 10。

​ 日志的级别要适当,比如在生产环境中的程序应该是比较稳定的,我们就不能采用TRACE级别的日志,防止日志过多,日志文件占用的存储过大。在这里,推荐一下我在其他地方看到的推荐日志级别的场景:

1. DEBUG:打印一些数据违反约束的事件以及不太调用不太成熟的API
	(即使调用结果返回成功),DEBUG级别日志在生产环境中应减少使用,
	只留下有意义的部分
2. INFO:打印程序开始或者退出的消息;
	删除及更新等DML类型的操作,注意查询类的操作不建议记录日志,
	需要审计的信息
3. ERROR:打印异常日志如网络不通,
	数据库连接失败,或者说比较成熟的API调用结果返回错误等等

​ 日志的级别没有最好的,只有最适合的,级别的选择也需要考虑日志的阅读者。


版权声明:本文为No1xyb1994原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。