打印原则
首先就是日志打印的基本原则:
1、隔离性,日志的打印是不能够影响到系统正常运行的。
2、安全性,日志打印不能出现漏洞,比如前段时间出现的log4j漏洞,就影响到了非常多的软件。
3、数据安全,日志打印要遵守数据安全,不能够打印一些隐私信息,机密信息等。
4、可读性,日志打印的目的就是为了排查问题,所以日志要包含一些业务主键,同时打印的日志可读,通过日志可以定位到问题所在。
规范
除了这些基本原则之外,还有一些比较通用的日志打印规范:
1、要区分日志等级,debug,info,warn,error。对于trace/debug/info级别的日志输出,要进行日志级别的开关判断。
2、日志打印不允许失败,更不能阻碍线程,而最容易犯的错误就是日志打印时出现了空指针。
3、捕获异常后不要使用e.printStackTrace()打印日志,这是因为如果堆栈信息太多,字符串常量池所在的内存块没有空间了,即内存满了,系统请求将被阻塞。可以直接打印e来获得堆栈和详细信息。
4、避免在循环体内打印日志。
5、禁止使用JSON序列化工具将对象整个打印,首先如果对象内get方法被覆写,会导致序列化失败,直接抛出异常。其次,序列化动作会消耗性能,还会产生中间对象占用内存。还有,如果对象过大,将会导致日志打印过多,占用磁盘,还会影响到问题定位。
最后,如果对象中存在隐私字段,全部打印还会有安全问题。日志打印也绝非小事,日常工作中还是要多加谨慎。
Was this helpful?
0 / 0