March 10, 2019

如何更好的打印日志

打印时机

如何做到在写代码的时候,对将来输出的日志做到心中有丘壑。

  • 如果当前 子方法的 Action 含义 和 父方法含义基本相同, 则 子方法出现错误时, 父方法调用其时,不需要再次打印
  • 如果要打印重要方法的调用和返回,调用的日志, 在 该方法进入时打印调用, 在方法返回时打印返回。

info日志级别

always 0 , important 3, debug 5, verbose 7, more 9

Error

  • 发生error 时,使用error级别
  • 发生error 时, 要附带打印当前的上下文数据信息,以便排查。

Always:

  • 对系统产生影响的,且无法恢复的,出现问题需要核对的, 例如删除, 日志级别 为 0
  • 记录重要主行为的发生和结束的结果。 日子级别为0.例如,开始做某个任务,及最终的执行结果。

Important

  • 对系统产生影响的, 例如增加,更新的动作,日志级别3, 也可以酌情为0.

Debug

  • 即将对系统产生影响的,例如 删除之前的提示 Deleting, 日志级别可定为 5。
  • 系统的主要逻辑分支。

Verbose

  • 打印相关执行过程中的上下文数据详情, 例如,http 请求过程中的, 请求内容, 响应结果。
  • 打印执行过程中, 主要逻辑分支外的,非主要分支的方法的执行过程。

日志内容

  • 将重要的动作放在开始,简短清晰。描述当前上下文的语句或者详细内容,放在语句后边。

例如

  "Skip namespace 'default',  secretlist=[], binding=xxxx/xxxx  "
  • 重要的动作,以大写开头,以 ing 表示进入, 以过去时表示结束。例如
  "Processing 'default/harbor', "
  "Processed 'defautl/harbor', error: nil, elapsed 52s "

© Chengjingtao 2017