日志是软件调试和测试的重要手段,良好的日志不仅可以清晰反应代码运行状态,出现问题时,可以大大缩短缺陷定位的时间和工作量。尤其对于后台服务,只有日志能反应程序运行情况。 比如,有些缺陷是很难复现的(能复现的缺陷很容易修改),如果在问题发生的时候,抓住难得的“机会”获取运行状态并输出合适的日志信息,基本上就能定位缺陷了。 从软件开发、调试以及测试过程,培养规范输出日志的习惯,可可大大减少软件开发的调试工作量。 目前代码调试日志暂不支持国际化,统一使用英文,不允许使用中文。
1.1 日志编号
日志编号主要时用于区分各模块的日志输出。
1.2 基本原则
1、日志一定要准确。注意,不准确的日志信息危害比不输出日志更大,会误导开发人员往错误的方向定位问题。 2、在代码运行的上下文环境中,尽可能多的输出日志信息,比如不允许简单输出“Connect success”这样的日志,应该输出“Connect 192.168.0.2:123456 success”。发生错误时,一定要输出对应的错误码和错误信息,目前日志组件可以使用%p和%M可以直接输出上次系统调用的错误信息。Uni错误码也获取提供对应错误码的功能。 3、不要输出重复日志信息。大量输出重复日志导致有用的运行日志信息被覆盖。比如尝试重复连接服务器,定时器里会不停尝试连接的操作,如果每次重试都输出日志,导致大量重复无用的日志。使用原则是:比如如果本次调用和上次调用返回错误码不一样,才输出日志(编程时可以考虑用静态变量或成员变量保存上次返回错误码)。 4、认真核对%和变量的对应。日志组件采用类似C的printf方式,%和变量不对应一定会导致崩溃。而且由于很多日志在异常流程中输出,正常流程不一定会运行到(实际上异常流程在单元测试中也是需要的调试)。 5、底层公共设施性的函数可以考虑不输出日志,而是返回合理的错误码,由调用这些函数的代码输出错误日志信息。