1 回答
TA贡献1831条经验 获得超10个赞
这是因为创建了只有一种方法(满足接口)的log.NewLogrusLogger()未导出。它不支持 logrus 本身的其他方法。logrusloggerLoglog.Logger
此Log方法可以采用键值对中的参数并logrus.Fields在记录时将它们放入。因此,如果您这样做Log("hello", "world"),它会将hello字段的值设置为world。但这不适用于level其他功能。
然而,由于logrus.FieldLogger嵌入在 的实现中logruslogger,我们可以断言我们的记录器的行为如下logrus.FieldLogger,然后执行以下操作:
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?")
}
我希望这有帮助。但由于他们只公开了Log方法,因此这些背后可能存在有意识的设计决策。您可以继续使用,Log或者如果您想要更大的灵活性,我建议您设置自己的记录器(使用 logrus),而不是我上面所做的。在我看来,这将是一种更清洁的方法。
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报