Skip to main content

日志

日志级别

Info

信息输出, 只需新疆该行写入日志输出, 不应该有关闭它的选项, 因为用户只应该被告知对他们有用的事情

Warning

在go中, 警告都被视为错误, 要减少使用警告, 使用warning时, 如果不处理, 应当在几天后转为错误 降级不应该常发生

当一个错误被降级处理之后,它就属于有损服务, 那么它不再是错误级别, 而是变为warning

示例:

if err := planA(); err != nil {
log.Warning("model: xx is%s", err)
planB()
}

Error

很多人都会在错误发生的地方记录日志, 尤其是使用error级别记录日志

  1. 处理Error
  2. 把error抛给调用者, 在顶部(gRPC, HTTP层的中间件)打印日志

如果在错误的地方已经处理了错误, 那么根据定义, 它不在是一个错误, 而是使用Info级别 正确示例:

err := planA()
if err != nil {
return err
}

Fatal

记录消息后, 直接调佣os.Exit(1), 意味着:

  1. 在其它的goroutine defer不会执行
  2. 各种buffers不会被flush, 包括日志
  3. 临时文件或者目录不会被清除

不要使用fatal记录日志, 而是向调用者返回错误, 如果错误一直持续到main.main. 就是在退出之前做处理任何清理操作的正确位置

Debug

在开发过程中, 调试语句应该是丰富的, 而不是求助与trace或者debug2级别