日志的作用在于,记录软件运行过程中所经历的流程,可以为今后的解决问题提供参考。特别是在大型软件项目中,是否记录日志,记录日志的详细程度显得特别重要。
作为一个合格的、负责任的软件开发人员,一定要记得,日志是为问题分析用的,而不是为了输出而输出。
目的在于,你、其他软件开发人员或者是技术支持人员,能够依据日志中记录的信息,快捷地判定问题所在,排除bug。
记录日志时,应注意以下几点:
(1) 记录的信息要准确
(2) 记录日志现场的上下文(context)
(3) 出现语意相同的日志信息时,可以增加调用函数名
(4) 上述不能确保日志信息唯一性时,输出代码所在的文件及行号
(5) 定义日志的严重程度
n 提示信息(Information)
n 警告信息(Warning)
n 错误信息(Error)
一般来说,错误信息是肯定要输出的,无论什么时候,无论用户定义了什么日志级别。
(6) 定义不同的级别,输出详细到不同程度的日志,避免因为日志的输出,导致系统的性能降低。日志级别LogLevel最好是通过参数来设定,如命令行输入参数,或系统配置文件的[KEY/Value]
(7) 不同类型的日志信息,可以选择输出到不同的文件中,避免因为日志内容庞杂,增加分析问题的难度
n 以进程为单位,输出日志
n 以进程组为单位,输出日志
(8) 提供日志的循环备份功能,循环备份的方式可以是:
n 按日志文件的大小备份(事先定义日志文件的最大限度)
n 按日期备份
n 按大小、日期来组合备份
(9) 提供日志的分析、清除工具。可以定期地根据日期,来清除历史日志;对于统计型日志,提供系统管理员分析工具。
(10) 日志的显示方式(考虑到用户需求)
n 文本形式
n GUI方式
(11) 日志中可能包含的数字
n 代码行号
n 错误编号(软件内部自定义错误编号,OS系统错误编号)