日志就像救火队,没有问题的时候感知不到它的存在;一旦出了问题没有它是不行的
日志困境:为什么需要打印日志
其实我们需要问一下自己这个问题:**为什么需要打印日志?**为了系统出问题时快速定位问题?为了监控系统运行情况?
我们的目的不一样打出来的日志也是不一样的;
如果搞不清楚打印日志的目的,为了打日志而打日志,那么很可能在需要日志的时候发现打的日志根本不能用;
下面是碰到的一些典型的日志问题:
- 打印过多的无用日志:当出现问题时无法找到想要的日志、无法定位问题;
- 堆栈信息json化:使得日志阅读成本直线上升;
- 没有链路id:定位系统间问题成本上升;
- 没有对日志长度大小限制:我碰到一个打日志把JVM打到GC的极端情况;
搞清楚了打印日志的目的,那么需要打印什么日志就很清楚了;
什么日志需要打印
根据日志的功能属性,将其分为纵向日志和横向日志:
纵向日志
纵向日志,顾名思义,就是能够从上到下串起来的日志。说白了就是一条链路上的日志,能够用一个traceId将日志串起来;
比较常见的纵向日志有接口日志,每一个request都会对应一个re