gpt4 book ai didi

logging - 去哪里记录错误

转载 作者:IT王子 更新时间:2023-10-29 01:23:57 27 4
gpt4 key购买 nike

也许这是一个意见,或者这实际上是一个最佳实践,但我想正确地做到这一点。

考虑以下代码:

func main() {
if err := doSomething(); err != nil {
// log here and exit?
}
}

func doSomething() {
f, err := os.Open("filename.ext")
if err != nil {
// log here and return the error/exit?
}
}

我很想知道应该在哪里记录错误以及应该从哪里退出程序(假设恢复是不可能的)。一些可能性包括:在被调用者中登录和退出;登录被调用者,返回错误,在调用者退出;登录被调用者,返回错误,登录调用者,然后退出。所有这些方法似乎都有好处。例如,第二种方法允许细粒度的错误消息,但仍将错误传递给调用者。但是,它会产生两条日志消息。

谢谢!

最佳答案

这是一个有趣的话题,确实归结为很多意见,所以这可能会被关闭。我尝试遵循一些准则:

  1. 只“处理”一次错误。记录算作处理。如果您不知道需要采取什么行动,请将其传递。您肯定不希望错误每次发生时被记录多次。

  2. 如果您的调用者可能会因为错误而改变他们的行为,您应该返回它。如果尽管有错误你仍然可以完成你的“工作”,也许你应该记录它并继续。

  3. 有时,将上下文添加到错误最初进入系统的位置会有所帮助(因此日志行可以包括错误的来源,而不仅仅是错误最终记录的位置)。类似于 https://github.com/pkg/errors对此很有用。

关于logging - 去哪里记录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com