当前位置: 首页 > news >正文

【小海实习日记】问题排查思路

思路1:我先排查好我自己这部分,没有问题了以后,再去和同事沟通对接。

思路2:从全局思维出发,去进行问题的排查,进行整个链路的判断。在链路的关键点中埋点,加日志。(链路是指这个功能模块涉及到的所有节点、不同人负责的部分)另外,解决好了自己的部分以后,及时同步到群上,进行协调解决。

为什么要输出日志?

在项目的日常开发维护过程中,各种问题是不可避免的。如果没有日志,我们很难了解出现问题时发生了什么以及如何解决。因此,输出日志的目的是为后续的维护和迭代提供便利。一条好的日志可以在问题定位和排查过程中提供极大的帮助,让我们更加省时省力。

输出日志的要点

那么,什么是一条好的日志呢?从场景和需求入手,当我们接到反馈说某个模块或者功能出现问题时,可能是我们的代码逻辑出现问题,或者是我们代码中调用的某种能力(如 MySQL、Redis、第三方服务)出现问题。

如果是代码逻辑问题,我们最关注的是代码出现在哪个文件、哪个函数、哪一行,以及为什么会触发错误。如果是调用某个服务出现问题,则需要从请求参数、请求的服务地址、服务返回的错误信息来排查。

为了加速日志在项目中和日志系统中的检索效率,我们还需要为每一类日志添加一个“索引字段”。

  1. 固定且高辨识度和检索能力强的索引(不要包含变量,这样在检索时容易做分组查询,变量应该作为引发错误的参数进行记录)
  2. 在项目中出现的位置(哪个文件、哪一行)
  3. 错误栈(一个函数可能在很多地方被调用,需要将从哪里触发、在哪里出现问题的整条链路记录下来)
  4. 引发错误的参数(可帮助我们复现场景、修复问题)
  5. 错误抛出的内容(可帮助我们做具体的优化)
  6. 错误发生的时间

相关文章:

  • python解决flask启动的同时启动定时任务
  • 疫情物资捐赠和分配系统的设计
  • ARM功耗管理之系统分区-电压域和电源域
  • Fastjson 反序列化漏洞[1.2.24-rce]
  • 06.持久化存储
  • Spring解决循环依赖
  • Ansys Mechanical|组装 External Mechanical Model
  • c++中 unordered_map 与 unordered_set 用法指南
  • 深入分析 Android BroadcastReceiver (一)
  • pqgrid的使用
  • 如何快速找到 RCE
  • 情感读本期刊万方收录综合期刊投稿
  • flinksql 回撤流中主键发生变更的影响(group by中的值发生改变)
  • Go-知识并发控制Context
  • NextJs 渲染篇 - 什么是CSR、SSR、SSG、ISR 和服务端/客户端组件
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Java 最常见的 200+ 面试题:面试必备
  • Java精华积累:初学者都应该搞懂的问题
  • JS学习笔记——闭包
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • storm drpc实例
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • XML已死 ?
  • 构建工具 - 收藏集 - 掘金
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 排序(1):冒泡排序
  • 区块链分支循环
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #mysql 8.0 踩坑日记
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (function(){})()的分步解析
  • (Java)【深基9.例1】选举学生会
  • (poj1.3.2)1791(构造法模拟)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计高校学生选课系统
  • (十六)串口UART
  • (小白学Java)Java简介和基本配置
  • (转)平衡树
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .mysql secret在哪_MySQL如何使用索引
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core Redis 使用有序集合实现延迟队列
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Core中如何集成RabbitMQ
  • .NET Micro Framework初体验(二)
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET的微型Web框架 Nancy
  • .NET微信公众号开发-2.0创建自定义菜单
  • @RequestBody与@RequestParam
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题