日志指南 | 公司的新同学该从哪些角度快速熟悉日志功能?

写在前面的话

开发的同学都知道log日志是多么重要的东西,日志的应用场景主要有两个:数据统计(告警和视图) 和 问题定位。后期日志数据统计还能用来性能优化,而 问题定位 也是需要长期重点关注的问题。

网页上有很多的关于log介绍的文章,大多都是偏于日志框架的应用介绍以及非常常见的规范说明。本篇文章主要专注于 进入公司的新同学该从哪些角度快速熟悉日志功能 ,提高我们定位问题的能力。

惨痛经历

来公司两个月不到的时候,有迭代的开发,有两个需求同时需要上sit环境 第二天要上uat,很着急。由于dev环境数据问题没能完全测试,项目在sit上挂了,一直找不到原因。当时晚上八点钟,两个需求的几个人都在我旁边等着我解决问题,项目到我这里阻塞了。后来还是在导师的帮助下看日志文件才解决了问题。而对于我来说,当时对项目里面日志的内容一点都不熟悉,要完全由我解决问题的话估计得30min,可是导师5min看出了问题。

刚来的那段时间,我一直在看框架、写小的业务和各种文档,感觉自己一堆东西要学习,就是没重视项目日志学习。后来我全面总结了日志相关内容,加上对业务深入,也能够很快定位问题了。

关于log学习

本篇文章不讲日志框架、日志采集、日志监控、日志告警等知识(有机会以后分享呀 嘻嘻),主要介绍一下我觉得日志学习的三步曲:

  • 项目中的日志学习,要特别注意哪些内容

  • 日志打印的好习惯

  • 日志查看常见方法

项目中的日志学习,要特别注意哪些内容

  1. 了解日志打印规范:梳理一下项目中不同场景下日志打印的规律 就会知道公司开发的习惯了,也要慢慢形成自己的习惯。

    • 场景:数据库操作、业务逻辑还是接口请求,你很熟悉哪些场景需要打印日志吗?

    • 级别:INFO ERROR DEBUG,你很清楚不同场景不同情况下日志的打印级别吗?

    • 内容:打印关键词 关键性内容或标志,你习惯在日志中输出关键字吗?

  2. 熟记每个环境下日志存放地址:项目配置文件应该是跟环境对应的,开发者需要非常熟悉日志存放地址,才能在任何环境下秒找到日志文件并快速定位问题。一般不同环境下日志地址配置是一致的。有时日志的命名也是由公司日志统计框架规定的,他们需要从特定日志名称的文件中拉取日志。比如地址:/data/logs/login-service/

  3. 熟知拦截器中日志打印的内容:每个公司一定会在拦截器中做一些日志处理的操作,这些日志会按照统一的规则进行打印的,会打印一些关键信息,比如所有的接口都会打印context或head里面的requestID/userID等,失败会有error标识并输出request 和 error信息,成功会有End标志并输出request 和 response。

日志打印的好习惯

  1. 服务启动的时候 记得打印日志:记录一些服务启动的关键信息,可以包括输出一些初始化信息、ip和端口、服务状态等。

  2. 用拦截器对每个接口的请求进行输出:比如打印traceId/userId/requestId、接口名、返回(正常返回 或 error)。requestId 真的非常重要,一般是用UUID。因为所有的请求都会输出requestId,在定位问题的时候就能够在日志中将一次请求的所有处理过程串联起来,这样我们就可以非常迅速的定位问题的位置。当然有时候也存在一种情况,我们需要结合多个日志来定位一个问题,多个日志的查看有两个方式:开多窗口多文件查看 和 ELK(开源的日志管理方案) 查询requestId找到所有相关日志。当然不同的组也存在权限问题,你也就有可能没法在ELK中查询所有的日志,这也是很尴尬的。

  3. 巧用关键字:在业务中打印一点关键信息,能够帮助自己快速定位问题。

  4. 注意不同日志级别的使用场景:有时候发生error了 但是需要忽略error,就可以用INFO级别的。日志的统计可以推动开发者减少日志量,错误日志量也是程序稳定性的一个衡量标准

日志查看常见方法

在日志查看的时候,使用一些技巧可以提高查询效率,帮助我们快速定位问题,以下所有操作在Linux环境:

  • 动态查看日志:通过下面的命令可以打开日志,当调用一个请求时会动态输出日志,方便在测试服务器调试

tailf logfile
  • 常用日志查看操作:一般以下4步就可以定位问题,然后判断报错是自己代码问题、配置问题还是上下游协作问题。(这篇vim文章很好

//vim 打开日志文件
1. vi logfile
//快捷方式将光标移至尾行
2. shift+g  
//在vim模式下,输入/pattern ,可查询关键字pattern.逆序查询用 ?pattern
3. /pattern  
//n 向下查询;N 向上查询
4. 按 n 可以查看下一个
  • 查找关键字在文件中出现的内容

grep XXX logfile

总结

文章重点是 进入公司的新同学如何快速熟悉日志功能,日志的学习不是针对某一门语言,日志学习的三部曲是递进关系的。首先熟知公司项目中的书写规范、日志存放地址、固定输出内容等严格的标准;然后养成自己在业务中写日志的好习惯;最后在定位问题的时候,多总结一些日志查看的方法,这样可以快速定位问题。但是离解决问题还有距离,因为很多问题是跟业务相关的,你对业务的熟悉程度是你解决问题的关键,所有同时你需要更快的去熟悉业务(自己的任务和整体业务)。

机会是留给有准备的人,想承担更多必须了解的更多。


关注我的公众号 鹏城工作记,有更多关于技术 学习 工作的内容分享哦~

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值