1 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
這是因?yàn)閯?chuàng)建了只有一種方法(滿足接口)的log.NewLogrusLogger()未導(dǎo)出。它不支持 logrus 本身的其他方法。logrusloggerLoglog.Logger
此Log方法可以采用鍵值對(duì)中的參數(shù)并logrus.Fields在記錄時(shí)將它們放入。因此,如果您這樣做Log("hello", "world"),它會(huì)將hello字段的值設(shè)置為world。但這不適用于level其他功能。
然而,由于logrus.FieldLogger嵌入在 的實(shí)現(xiàn)中l(wèi)ogruslogger,我們可以斷言我們的記錄器的行為如下logrus.FieldLogger,然后執(zhí)行以下操作:
package main
import (
log "github.com/go-kit/kit/log/logrus"
"github.com/sirupsen/logrus"
)
func main() {
logrusLogger := logrus.New()
logrusLogger.Formatter = &logrus.JSONFormatter{TimestampFormat: "02-01-2006 15:04:05"}
logger := log.NewLogrusLogger(logrusLogger).(logrus.FieldLogger)
logger.Error("Hello")
logger.Warn("Warning you")
logger.WithField("good", "bad").Infoln("is it good or bad?")
}
我希望這有幫助。但由于他們只公開(kāi)了Log方法,因此這些背后可能存在有意識(shí)的設(shè)計(jì)決策。您可以繼續(xù)使用,Log或者如果您想要更大的靈活性,我建議您設(shè)置自己的記錄器(使用 logrus),而不是我上面所做的。在我看來(lái),這將是一種更清潔的方法。
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)