打印日志有什么技巧

meluo
  • 216

在日常开发中,我们总是是遇见各种各样的异常,有异常就需要分析 要分析就需要信息,而信息通常来源于日志,在我们公司里,有的模块一天的日志 有几个G(太多啦),有的日志一两句话(信息太简单啦),大家在生产环境中一般怎么配置日志信息的,都是怎么打印的,交流下

回复
阅读 3.4k
6 个回答
Yujiaao
  • 12.6k

自己写的代码, 成熟模块输出到info级别, 新写的模块 debug级别,99%的可能问题都出在这里.
别人家的模块, 输出warn就好.

这里自己,指的是你或是你的团队.
别人家,是指系统和开源框架或工具类.

技巧就是:
高并发的时候不打日志,或者通过日志系统收集info以上级别的日志
非高并发就无所谓。

高并发的时候根本不是通过日志去定位问题。那么多流量,怎么知道哪个错误是怎么产生的。

主要分为两种日志,错误日志和分析日志

错误由各个模块抛出,在最上层统一处理错误,并输出错误信息到错误日志
分析日志一般用于统计,一般一次请求就一个,包含和这次请求所有相关的信息,其中也包括一些统计指标

使用 github.com/sirupsen/logrus + github.com/sohlich/elogrus 收集日志到 es,基于 es 作统计分析,以及监控报警

楼上说的其实都对,我也说一些我个人的经验吧:
1、不要打印太多日志,只打印涉及添加、修改、删除的日志
2、线程名字、代码行数要带上
3、打印的数据信息一定要多,最好把对象属性也打出来
4、统计类型的日志一定要打,比如说一个task的执行时间,这样服务变慢了,你能很快发现

日志分类:运行日志,操作日志,接口日志等等
不同的日志打印的信息是要求是不一样的,根据业务需求去答应对应的类型日志

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏