log日志在软件开发和维护中都很有用, 在开发阶段可以方便调试, 在维护阶段对于出问题时的定位更是有关键作用, 尤其是在问题较难复现和无法现场调试的情况下. 以下简要总结了下日志模块中一些有用的功能和日志中一些有用的信息.
一. 日志模块的功能
1. 分级控制, 如debug, info, warning, error, fatal等
不同的情况下可能需要显示不同重要程度的日志信息, 开发测试阶段可能希望显示所有的日志信息, 待系统运行稳定后可能只需要记录少量关键的异常信息.
2. 模块控制, 只显示某个模块的调试信息
调试时经常会希望只显示某个或某些模块的调试信息, 而将其他模块日志信息的级别控制在较高.
3. 输出方式, 如打印到串口, 控制台, 记录到文件等
不同的输出方式在便捷性, 可保存性和系统资源占用率等方面有所差异, 开发阶段输出到控制台可能最直接, 系统运行阶段应该记录到文件以备查阅, 输出到串口/控制台资源消耗较大, 有时会使系统在打开和关闭日志的情况下有不同的表现, 此时采用将日志输出到内存, 待积累到一定量时保存到文件的方法较为合适.
4. 在日志中包含时间信息
对于大部分软件, 查看日志信息时很可能希望知道某条日志产生的时间.
二. 一些可能会有用的日志信息
概括的说就是记录的信息要尽可能详细, 在维护阶段用户将日志发给你而你又无法现场调试时就会深刻地体会到这一点的重要性了, 良好的日志打印可以很快分析到问题的所在而不用再运行一遍程序. 打印日志的代码应仔细设置日志的级别, 通过输出级别控制可以避免将重要信息淹没在大量无关内容里.
1. 检测到某些错误或异常情况时
分析日志经常从第一个错误或异常开始.
2. 重要函数的入口(和出口)
事实上, 只要调用不是极其频繁的函数都可以在入口(和出口)处加一条日志打印.
3. 运行过程中的一些关键数据
很多时候, 一个异常的数据值就能定位到问题的大致位置了.