Contents
  1. 1. 日志中需要记录的:
  2. 2. 日志中可能需要记录性能信息:
  3. 3. 日志中最好不要记录的:
  4. 4. 分层记录日志
  5. 5. 日志也需要测试!!!

在我之前的博客如何减少不能重现的Bug提到要遵守好的日志规范,今天就在介绍一下另外一篇文章Optimal Logging。要点如下:

日志中需要记录的:


  • 重要的启动配置
  • 错误
  • 警告
  • 对持久化数据的改变
  • 主要系统模块之间的请求和应答
  • 显著的状态变化
  • 用户交互
  • 已知有失败风险的调用
  • 等待一个需要很长时间才能完成的条件
  • 长时间运行的任务顶起的进度更新
  • 显著改变逻辑分支的条件
  • 宏观的处理步骤或者事件的总结(避免记录微观函数复杂流程的每一步)

日志中可能需要记录性能信息:


  • 显著的系统调用
  • 网络请求
  • CPU密集的操作
  • 于连接设备的交互
  • 事务

日志中最好不要记录的:


  • 函数入口(除非这个函数非常重要或者是在记录debug层的信息)
  • 循环中的数据(除非是小循环,或者是一个大循环中定期的记录一些信息)
  • 大消息或者文件的内容(截断或者总结来帮助调试)
  • 良性错误(比如认为是正常流程的异常处理,容易迷惑读日志的人)
  • 重复的错误

分层记录日志


典型的分层方式为:

  • Debug:在debug过程中会用到的信息
  • Info:最常用的
  • Warning:奇怪或者非预期的状态,但是可以接受
  • Error:出错了,但是程序可以恢复
  • Critical:程序不能恢复,必须重启或者关闭

两种配置:

  • 生产环境:除了Debug,别的全部打开
  • 开发调试环境:全部打开

日志也需要测试!!!

Contents
  1. 1. 日志中需要记录的:
  2. 2. 日志中可能需要记录性能信息:
  3. 3. 日志中最好不要记录的:
  4. 4. 分层记录日志
  5. 5. 日志也需要测试!!!