Go 服务开发高手课
徐逸
头部大厂资深 Go 技术专家、前腾讯资深工程师
1163 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 21 讲/共 28 讲
开篇词 (1讲)
Go 服务开发高手课
15
15
1.0x
00:00/00:00
登录|注册

20|日志和错误码:如何快速定位线上问题?

你好,我是徐逸。
通过上节课的学习,相信你已经掌握了 Go 代码中潜藏的四类陷阱。然而,除了编写健壮的代码来预防线上问题之外。当出现线上问题时,能够快速定位和修复问题同样至关重要。而日志和错误码,是我们快速定位线上问题的得力工具。可以说,日志记录的质量高低以及错误码设置的合理与否,直接影响着我们面对问题时的定位效率。
因此,今天这节课,我们就来聊聊怎样合理地打印日志和设置错误码,才能帮助我们更快的定位问题。

日志最佳实践

为了能通过日志更高效地定位问题,我们在进行日志打印时,重点需要考虑下面三个问题。
首先是日志的位置。我们需要确定在代码的哪些关键位置打印日志,从而确保当问题发生时,我们能够有足够的信息来定位问题。
其次是日志的等级。我们需要决定在不同情况下应该记录哪种级别的日志,以便在问题发生时能够快速识别问题的严重性。
最后是日志的内容。我们必须考虑日志中应该包含哪些具体内容,以确保日志信息的完整性和有用性,从而帮助我们高效地诊断和解决问题。

日志位置:我们该在哪些地方打印日志?

为了能借助日志快速定位问题,日志打印要适度,既不能过多也不能太少。日志过多不仅会淹没关键信息,而且过多的日志打印与收集,会大量占用磁盘、网络等硬件资源,对服务性能造成不良影响;反之,如果日志过少,一旦出现问题,由于缺乏足够的信息,会导致我们难以靠日志定位问题根源,增加故障排查和修复的难度。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 合理的日志打印需要考虑位置、等级和内容,以确保在问题发生时能够快速定位问题。 2. 在关键节点打印日志,如服务启动阶段、请求处理环节、外部交互部分、定期执行的后台任务和异常处理环节。 3. 在线上环境记录 ERROR、WARN 和 INFO 三种级别的日志,分别用于记录错误、需要引起注意的问题和系统正常运行的关键信息。 4. 一个优质的日志消息字段应该精确地记录足以反映当前事件的关键信息,包括事件描述、事件状态、触发原因、关键上下文信息和函数调用堆栈信息。 5. 错误码规范应该能够快速溯源并实现沟通标准化,通过错误码能够迅速识别错误的来源和帮助团队成员快速对错误原因达成共识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 服务开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)