读书人

闲谈程序中怎么打印log

发布时间: 2012-11-05 09:35:11 作者: rapoo

闲谈程序中如何打印log

程序中记录日志一般有两个目的:Troubleshooting和显示程序运行状态。好的日志记录方式可以提供我们足够多定位问题的依据。

这周看过很多代码,对里面的日志记录方式有些想法,今天是周末,也想总结下我对这个问题的看法。日志记录大家都会认为简单,但如何通过日志可以高效定位问题可不是简单的事情。这里我会写下面三个方面的内容,主要是举例为主,提醒我以后得注意这些方面
怎样记日志可以方便Troubleshooting 程序运行状态可以记哪些 应该避免怎样的日志方式
方便Troubleshooting的日志:

对外部的调用封装:
程序中对外部系统与模块的依赖调用前后都记下日志,方便接口调试。出问题时也可以很快理清是哪块的问题


状态变化:
程序中重要的状态信息的变化应该记录下来,方便查问题时还原现场,推断程序运行过程

系统入口与出口:
这个粒度可以是重要方法级或模块级。记录它的输入与输出,方便定位

业务异常:
任何业务异常都应该记下来


非预期执行:
为程序在“有可能”执行到的地方打印日志。如果我想删除一个文件,结果返回成功。但事实上,那个文件在你想删除之前就不存在了。最终结果是一致的,但程序得让我们知道这种情况,要查清为什么文件在删除之前就已经不存在呢


很少出现的else情况:
else可能吞掉你的请求,或是赋予难以理解的最终结果


大批量数据的执行进度:

关键变量及正在做哪些重要的事情:
执行关键的逻辑,做IO操作等等


避免的日志方式

无意义的Log:
日志不包含有意义的信息: 你肯定想知道的是哪个文件不存在吧

Connection connection = ConnectionFactory.getConnection();if (connection == null) {    LOG.warn("System initialized unsuccessfully");}
1 楼 witcheryne 2011-08-13 整理的不错,受用~~
想想我的程序,基本全是info.. 定位问题非常慢

读书人网 >编程

热点推荐