在日常开发中,我们总是是遇见各种各样的异常,有异常就需要分析 要分析就需要信息,而信息通常来源于日志,在我们公司里,有的模块一天的日志 有几个G(太多啦),有的日志一两句话(信息太简单啦),大家在生产环境中一般怎么配置日志信息的,都是怎么打印的,交流下
技巧就是:
高并发的时候不打日志,或者通过日志系统收集info以上级别的日志
非高并发就无所谓。
高并发的时候根本不是通过日志去定位问题。那么多流量,怎么知道哪个错误是怎么产生的。
主要分为两种日志,错误日志和分析日志
错误由各个模块抛出,在最上层统一处理错误,并输出错误信息到错误日志
分析日志一般用于统计,一般一次请求就一个,包含和这次请求所有相关的信息,其中也包括一些统计指标
使用 github.com/sirupsen/logrus
+ github.com/sohlich/elogrus
收集日志到 es,基于 es 作统计分析,以及监控报警
楼上说的其实都对,我也说一些我个人的经验吧:
1、不要打印太多日志,只打印涉及添加、修改、删除的日志
2、线程名字、代码行数要带上
3、打印的数据信息一定要多,最好把对象属性也打出来
4、统计类型的日志一定要打,比如说一个task的执行时间,这样服务变慢了,你能很快发现
7 回答5.6k 阅读
6 回答7.1k 阅读✓ 已解决
8 回答6.5k 阅读
2 回答4.1k 阅读✓ 已解决
2 回答808 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
自己写的代码, 成熟模块输出到info级别, 新写的模块 debug级别,99%的可能问题都出在这里.
别人家的模块, 输出warn就好.
这里自己,指的是你或是你的团队.
别人家,是指系统和开源框架或工具类.