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