为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
不负相思意 2022-10-24 09:29:27
我正在尝试调试我的 golang 应用程序。目前,我有一个不起作用的 API 请求,其中包含这行代码: fmt.Errorf("Object(%q).CopierFrom(%q).Run: %v", dstName, object, err)如何查看此错误日志的输出?如果不可能,还有什么其他方法可以调试?(运行时调用会很好)
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

fmt.Errorf()创建一个错误对象。但不打印。文档

如果您只是想将消息打印到标准输出: 运行

package main


import (

    "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 代码,我建议使用日志包,例如: zerolog

package main


import (

    "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"}



查看完整回答
反对 回复 2022-10-24
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

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)



查看完整回答
反对 回复 2022-10-24
?
慕后森

TA贡献1802条经验 获得超5个赞

fmt.Errorf创建一个错误 - 函数返回的理想选择 - 但它没有被隐式记录。

如果您想简单地记录错误:

log.Printf("api X: error %v", err)


查看完整回答
反对 回复 2022-10-24
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信