一个软件系统的日志处理,往往被忽略或忽视,直到把系统发布到用户那里,出现问题了,才想起来没有重现问题,分析问题的工具:log.
其实log,对于软件系统非常重要,是系统运行状态的记录,当出现问题时就可以通过日志来定位问题。应该在开始就被标准化,比如log level的确定,log信息的格式,哪儿写log,并在全组达成共识,这也是architect的职责之一。
哪儿写log:
个人认为,不同模块之间,特别是从属于不同组的模块,一定要有详尽的log,这样对于定位问题的所属模块非常重要。对于复杂模块,尽可能的增加log.
对于用户的操作,尽量写log,这样可以重现用户的操作序列。
有关log的性能:
log4j是java平台非常优秀的log工具,对于大量debug信息的处理,可尽量使用isDebugEnabled()方法,优化对于debug的处理或忽略。log4j是同步写本地文件,如果能找到合适的异步的日志服务就更好,这样就对系统性能的影响就比较小了。
log量:
要严格区分log的不同level。 error,warn, info级别的日志,尽量不要太多,不然,会影响系统的日常性能。对于debug级别的,也尽量作到精简。不然淹没在log的海洋里,很能找到真正有用的信息。
个人一点经验:把log级别分别设置成生产环境的和debug环境的,然后检查产生的log,看看log是否能看的明白,能不能看的出程序执行的大体流程,如果我们开发者都看不明白,那这log的有效性就值得怀疑了。
祝我们不再因为没有足够清楚的LOG而被测试人员追赶。