3 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
fmt.Errorf()
創(chuàng)建一個(gè)錯(cuò)誤對(duì)象。但不打印。文檔
如果您只是想將消息打印到標(biāo)準(zhǔn)輸出: 運(yùn)行
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
如果你想調(diào)試 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"}

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
fmt.Errorf
創(chuàng)建一個(gè)error
對(duì)象;它不打印。
從文檔中fmt.Errorf
:
func Errorf(format string, a ...interface{}) error
如果您只是想將消息打印到標(biāo)準(zhǔn)輸出:
fmt.Printf("Object(%q).CopierFrom(%q).Run: %v\n", dstName, object, err)
如果您想寫入錯(cuò)誤日志,我建議您查看log
包。例如,如果您要寫入 stderr:
logger := log.New(os.Stderr, "my-app", 0) logger.Printf("Object(%q).CopierFrom(%q).Run: %v", dstName, object, err)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
fmt.Errorf
創(chuàng)建一個(gè)錯(cuò)誤 - 函數(shù)返回的理想選擇 - 但它沒有被隱式記錄。
如果您想簡單地記錄錯(cuò)誤:
log.Printf("api X: error %v", err)
- 3 回答
- 0 關(guān)注
- 245 瀏覽
添加回答
舉報(bào)