Golang 使用 Zerolog 并引发错误

我正在使用zerolog在我的 Go 应用程序中进行日志记录,并且我正在尝试遵循最佳实践以仅在堆栈顶部出错。但是,我不确定如何将两者都写入我的错误日志并将错误向上传递:


func VeryDeepFunction() (int, error) {

   err := doSomethingThatCouldCauseError()

   if err != nil {

      errMsg := fmt.Sprintf("something bad happened: %+v", err)

      log.Error().Msgf(errMsg)

      return 0, fmt.Errorf(errMsg)

   }

   return 1, nil

}

这对我来说是多余的——格式化字符串,用 zerolog 归档,然后再次包装错误。有没有更正确的方法来做到这一点?


互换的青春
浏览 146回答 1
1回答

HUWWW

可以链接错误package mainimport (    "log"    "github.com/pkg/errors")var someError = errors.New("something is wrong")func main() {    // processing error on top level    if err := someFunc(); errors.Is(err, someError) {        log.Println(err)    }}func someFunc() error {    if err := alwaysError(); err != nil {        return errors.Wrap(err, "someFunc")    }    return nil}func alwaysError() error {    return someError}输出将是2022/09/01 10:00:46 someFunc: something is wrong有关详细信息,请参阅错误包
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go