menu

日志粒度总结:“应当在哪些地方记录日志,记录时应当记录哪些信息?”

概述

在浏览 v2 社区进行学习交流时,看到了一篇 “日志的粒度请教?” 的帖子,于是仔细思考了此问题,并且将自己在工作过程中总结的经验分享给大家,欢迎大家互相讨论学习。

内容

总结了以下几点:

1. API 的 I/O 日志,也就是请求参数和响应内容记录日志,这相当于整个系统的大门了,访问日志在排错、性能分析等方面非常有用;

2. 第三方 API 的 I/O 日志,也就是请求第三方 API 发送了哪些参数,第三方 API 又响应了哪些参数,这有利于分析传递的数据是否正确;

3. 异常块,所有捕获异常的位置均应当记录异常内容,除非一些用于业务逻辑判断的异常块(例如:利用异常来判断某个字符串是否能转换等);

4. 非正常请求,例如请求某个 API 报了 403,应当记录 >= WARN 级别的日志,这里和 #1 的区别是,#1 无论正常还是异常均记录请求、响应内容,这里的应当记录更加详细的内容,例如为什么会产生 403 响应,并且日志级别应当更高,方便分析、优化;

5. 应用启停日志,在启动应用进行初始化时,应当记录各个参数的情况,便于在启动时遇到问题进行定位。同理,在应用停止的时候(特别是异常停止),应当记录详细的运行状况、运行参数等日志;

6. 其他日志,根据实际业务情况需要,应当记录其他日志,例如调用短信接口时记录短信用量、剩余量等,这样可以通过编写日志报警规则来实现短信余额不足预警功能;

如有有更多关于日志方面的知识和经验,欢迎留言补充

总结

记录日志的目的是为了方便事后分析、问题定位,所以我们在记录日志时应当考虑如何让其他人可以通过日志来分析问题,这类似于编写代码注释,考虑的是让别人能看懂,而不是仅仅自己能看懂。

例如有时候我们记录日志,比如短信剩余量,我们直接记录 ```logger.info(count)``` ,很显然这样的日志只能自己能看懂,其他人很难理解,良好的日志示范参考 ```logger.info("短信发送条数:x条,剩余条数:x条")```

版权

> 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

> 原创作者:10086@xiaoi.me 发表于 Xiaoi's Blog:https://blog.xiaoi.me

> 原文链接:https://blog.xiaoi.me/2019/12/04/log-usage

扫码关注我,在线与我沟通、咨询

Xiaoi's Blog

***转载请保留原文链接以及版权信息***