亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取記錄器的文件和函數名稱

如何獲取記錄器的文件和函數名稱

Go
holdtom 2023-07-26 17:39:50
我正在使用?logrus操作系統,它按預期工作,現在我們需要將文件和函數添加到記錄器輸出中,您可以從其中調用記錄器,我們需要它是這樣的文件log-ut-usagefunc main(){? logs := lts.InitLogger("test","1","debug")? logs.Debugf("test 123")....}這是所需的輸出{"file":"log-ut-usage/main.go:21","function":"main","level":"warn","test 123":"ddd","timestamp":"2019-10-02T09:21:39.309559Z"}目前我們得到了文件和函數文件logger.gofunc InitLog(label string) LoggerI {loggerImpl = &logrus.Logger{? ? ? ? Out:? ? ? ? ? os.Stdout,? ? ? ? Level:? ? ? ? level,? ? ? ? ReportCaller: true,? ? ? ? Formatter: &logrus.JSONFormatter{? ? ? ? ? ? TimestampFormat: timestampFormat,? ? ? ? ? ? CallerPrettyfier: func(f *runtime.Frame) (string, string) {? ? ? ? ? ? ? ? s := strings.Split(f.Function, ".")? ? ? ? ? ? ? ? funcname := s[len(s)-1]? ? ? ? ? ? ? ? _, filename := path.Split(f.File)? ? ? ? ? ? ? ? return funcname, filename? ? ? ? ? ? },? ? ? ? },? ? }這是(不需要的)輸出{"file":"logger.go","func":"InitLog","level":"debug","msg":"test 123","time":"2019-10-02 12:21:39"}我不想獲取logger.go我們編碼 json 格式化程序的文件,我想獲取使用 logger 的文件。
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

您可以使用文件、函數和行信息包裝記錄器,然后使用它們。

這是一個例子:

package main


import (

? ? "os"

? ? "runtime"

? ? "strconv"

? ? "strings"


? ? log "github.com/sirupsen/logrus"

)


func init() {

? ? log.SetFormatter(&log.JSONFormatter{})

? ? log.SetOutput(os.Stdout)

}


func logger() *log.Entry {

? ? pc, file, line, ok := runtime.Caller(1)

? ? if !ok {

? ? ? ? panic("Could not get context info for logger!")

? ? }


? ? filename := file[strings.LastIndex(file, "/")+1:] + ":" + strconv.Itoa(line)

? ? funcname := runtime.FuncForPC(pc).Name()

? ? fn := funcname[strings.LastIndex(funcname, ".")+1:]

? ? return log.WithField("file", filename).WithField("function", fn)

}


func test() {

? ? logger().Info("Testing...")

}


func main() {

? ? logger().Info("Testing...")

? ? test()

}

輸出:


{"file":"prog.go:34","function":"main","level":"info","msg":"Testing...","time":"2009-11-10T23:00:00Z"}

{"file":"prog.go:30","function":"test","level":"info","msg":"Testing...","time":"2009-11-10T23:00:00Z"}



查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號