为什么我在本地运行 go app 时在终端中看不到 fmt 日志?

我正在尝试调试我的 golang 应用程序。目前,我有一个不起作用的 API 请求,其中包含这行代码: fmt.Errorf("Object(%q).CopierFrom(%q).Run: %v", dstName, object, err)

如何查看此错误日志的输出?如果不可能,还有什么其他方法可以调试?(运行时调用会很好)


不负相思意
浏览 197回答 3
3回答

汪汪一只猫

fmt.Errorf()创建一个错误对象。但不打印。文档如果您只是想将消息打印到标准输出: 运行package mainimport (    "fmt")func main() {    const name, id = "bueller", 17    err := fmt.Errorf("user %q (id %d) not found", name, id)    fmt.Println(err.Error())}出去:user "bueller" (id 17) not found如果你想调试 golang 代码,我建议使用日志包,例如: zerologpackage mainimport (    "errors"    "github.com/rs/zerolog"    "github.com/rs/zerolog/log")func main() {    // UNIX Time is faster and smaller than most timestamps    zerolog.TimeFieldFormat = zerolog.TimeFormatUnix    err := errors.New("seems we have an error here")    log.Error().Err(err).Msg("this is an error")}出去:{"level":"error","error":"seems we have an error here","time":1640795128,"message":"this is an error"}

有只小跳蛙

fmt.Errorf创建一个error对象;它不打印。从文档中fmt.Errorf:func Errorf(format string, a ...interface{}) error如果您只是想将消息打印到标准输出:fmt.Printf("Object(%q).CopierFrom(%q).Run: %v\n", dstName, object, err)如果您想写入错误日志,我建议您查看log包。例如,如果您要写入 stderr:logger := log.New(os.Stderr, "my-app", 0) logger.Printf("Object(%q).CopierFrom(%q).Run: %v", dstName, object, err)

慕后森

fmt.Errorf创建一个错误 - 函数返回的理想选择 - 但它没有被隐式记录。如果您想简单地记录错误:log.Printf("api X: error %v", err)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go