起步
我们初学程序的时候,写下了
printf(“hello world\n”),会在控制台打下hello world。要运行这个程序并不简单,需要配置好编译环境,生成可执行文件,调用系统函数操控显示器。其实我们后来知道,这句代码的意思是在标准输出上显示字符串。
在很长一段时间内,我们会打印各种变量信息,查看程序的运行状态,来确保程序达到预期。这是新手调试程序的重要手段,而且很好用,是初级程序员之间水平的重要区别。
后来我们知道打印不是目的,而是我们获取洞察的来源,是对逻辑内部的监控。
新语言
学习了新的程序语言,会有新的方式,Java的system.out,js古老的alert。很费解很多很有经验的开发者的主要调试方法就是这样的打印。慢慢我们知道了原来有logger框架,JS里有console。
学会调试后
大多数人在学会断点调试之后,就很少使用打印,看看监控器的变量比打印方便多了。
但是线上环境是难以下断点的,这时候还是日志来的直接,俗话说:日志打的好,线上没烦恼。看来日志也是中级程序员之间不同水平的一个判断。
Java的日志
Java的日志是中级开发者的一个门槛,日志框架众多,配置繁琐,学会使用算是对中级程序员的一个很好的考察。你又达到中级了吗?
日志的意义
日志到底意味着什么?我们花很大的力气设置不同的日志级别,拆分不同的文件,收集到统一的服务器上,当然不只是让日志看上去很屌这么简单。
当拥有一个大的软件系统时,日志仍然是洞察力的主要来源。看来日志也是高级程序员之间水平的重要差距。
很多同事让我帮忙定位问题的时候,我的第一句大都是看日志了没有?基本上就是没看,所以才问我。
日志就像飞机上的黑匣子,记录了现场,可以让我们复盘使用。一个web开发者,有必要知道从浏览器敲下回车,到页面显示结果的所有过程。在不同地方出问题时去看不同地方的日志,这就是问题定位的技巧。
网络的日志,web服务器的日志,应用服务器的日志,数据库日志等等。都需要在必要的时候进行查看。如果不知道出现了什么问题,又何来的解决方法呢?
学习新框架时,遇到问题搜索时,使用软件困惑时,日志就是你的vision,学会看日志便会领先你周围的大多数同事。很多人解决不了的问题,答案就写在日志里面。
错误排查时,大多数时候看一看浏览器的http请求日志,看看服务的异常日志,问题就解决了。当然如果你的代码不打日志,谁也帮不了你,必须要有日志的意识。在性能优化时,没有日志就是在瞎猜,就是自欺欺人。
是时候打印人生的日志了
写周报,写月报也许就是领导想查看公司运行的日志。
你都有那些被日志帮助过的的例子?希望你能分享给我。