一个将日志消息仅区分为 info 和 error 的实践分享
随着软件开发的不断进步,日志记录变得越来越重要。作为一名软件开发人员,我们经常会在代码中添加日志,以便了解代码的运行情况。不同的软件有不同的日志级别,例如 info、warning 和 error。理论上,对日志信息进行分类,可以帮助我们快速定位和解决问题。
CasaOS 是针对 Docker 和 NAS 场景的开源软件,我们非常依赖后台的日志来帮助判断和解决每次用户遇到的问题。在团队的最新迭代中,我们采取了一种新的日志记录实践:取消 warning 级别日志,只保留 info 和 error 级别的消息。我们认为这样做有助于提高代码的可读性,并减少日志记录带来的干扰。通过这种实践,我们希望为软件开发带来更高的效率。
这个实践的出发点是,开发人员习惯于将不确定是否为 error 消息视为 warning 级别,或者他们根本不知道如何处理又不算 error 但又不正常的情况,所以就放在 warning 级别希望看到的人自行决定怎么去处理。这样做导致有时候某些 warning 信息应当引起开发者和用户的注意,但往往大概率因为等级不够严重而被疏忽。
另一方面,当调查一个 bug 的时候,人们在过滤日志时必须考虑是否应包括 warning 消息。很多情况大家只过滤出 error 的信息来看,因此某些重要信息可能会遗漏;然后又决定包含 warning 消息,可是又得到一大堆并没有价值的其它 warning。后来等发现问题的根本原因时,整个 MTTR(平均问题解决时长)已经被延长了。
而通过采用在日志中取消 warning 等级这个实践,日志中的消息要么是 info 要么为 error。如果某些信息真的只是需要开发者和用户知晓(即使是一个不正常的现象),而不需要有任何动作,那么就应该划为 info 等级;否则,这条日志消息应该被放在 error 级别,从而引起人们的注意,并做出相应的处理动作。这样做不但对看日志的人来说更加容易分析,而且对于写代码的我们来说,也省去一层是否要把日志消息放在 warning 级别的思考。
通过采用这种新的日志记录实践,CasaOS 团队进一步提高代码质量,在解决用户问题上提升了效率。我们期待着这一实践能够在更多的项目中得到广泛应用,为软件开发带来更多的福利。
版权声明: 本文为 InfoQ 作者【Tiger】的原创文章。
原文链接:【http://xie.infoq.cn/article/3663ebbfe101e476d1e0f5f75】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论