我正在使用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 归档,然后再次包装错误。有没有更正确的方法来做到这一点?
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
可以链接错误
package main
import (
"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
有关详细信息,请参阅错误包
- 1 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消