(译)调试时日志都应该记些什么
日志是一款应用的重要组成部分,他就像程序员的眼睛一样,帮助程序员发现应用到底在做些什么。日志真的是非常有用,特别是你的应用在生产环境中除了问题,却又不能在测试环境或者其他环境复现的时候。
尽管日志非常基本,但是程序员必须有智慧地去记日志。如果不这样,你有可能不能获取到你想要的信息,或者记的日志太多导致磁盘空间都被消耗完了,同时,也会导致系统性能的下降。
var goBranch1 = true;
if (goBranch1){
console.log("In branch 1");
...
} else {
console.log("Not in branch 1");
...
}
所以调试的时候日志都应该记些什么呢?在这里,我们总结罗列了一些我们认为对你有用的东西
什么东西应该记
记录应用的信息。包括了应用的名字,版本号,编译时间等等。这些信息保证了我们在调试的时候是针对了正确的版本的应用
记录配置信息。包括了当前运行是什么模式(生产模式还是开发模式等等)。这些信息会让我们对应用的配置有个全局的印象,并为我们的调试提供方向。
记录路径信息。让应用尝试去获取外部的资源(包括文件,套接字等等),这些信息让我们去确定这些资源是否真的能被访问
记录分支信息。当我们在程序中使用了控制流,记录这些信息让我们知道是哪个分支出了问题。
记录异常,一些异常会以标准异常的形式打包好,然后配跑出。记录这些原始的异常信息,他们通常会反映出问题的根本原因
记录前后的数据信息。当我们处理外部数据的时候(包括编码解码,加密解密啊什么的),记录输入输出的数据会帮助我们确定处理数据的算法是否正确
记录线程信息。在使用了多线程技术的应用里,记录线程信息帮助我们发现是哪个线程出了问题
记录状态信息,当编写一些状态经常发生改变的应用(比如说ssl),每次状态发生变化的时候都记录一下状态信息会帮助我们了解现在程序出现问题的时候程序到底在哪里(ps,其实这点我没大看懂,望有缘人请教)
什么东西不应该记
不要记录敏感信息。像密码啊,密钥啊这些鬼,特别是在我们帮一些别的公司写程序的时候
不要替换信息,注意你正在记录的信息,不要去试图更改这些信息的状态。因为这些状态信息可能是又某个程序中变量控制的,而这些变量的改变会引起程序运行结果的改变。
不要在循环中记录太多。在我们编写循环的时候(像for, while),请尽可能只记录有必要的信息,因为如果在循环中记录太多,磁盘空间很容易被撑爆
不要记录重复的信息。有时候你会记录一些即将被传入某个方法的参数,然后你又忘记了,在函数内部把他又记录了一次。请尽量避免这种情况发生,你可能需要定一个你自己的记录日志的准则
不要记录模糊的信息。请记录完整的信息,而不要让程序员去猜的他的意思
不要记录大的数据对象。如果你希望应用处理大数据对象(MB级这样的),记录前请小心的评估,也许你只需要记录一部分数据对象就可以了对吧
一个好的日志会让你每天的工作更加简单。合适的日志帮助你快速的定位和解决一些紧急的问题
原文出处
译者:Coordinate35
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。