我想要一个 logrus 记录器,它在 main() 中配置了默认字段,所以我不必指望其他开发人员每次都记录所需的字段。作为原型,我有这个,它完全符合我的要求:
package main
import (
"github.com/sirupsen/logrus"
)
var (
log *logrus.Logger
logger *logrus.Entry
)
func foo(x, y string) {
logger.WithFields(logrus.Fields{"A": x, "B": y}).Error("error!")
}
func main() {
x := "argle"
y := "bargle"
log = logrus.New()
logger = logrus.WithFields(logrus.Fields{"X": x, "Y": y})
// log.Formatter = &logrus.JSONFormatter{}
logger.Info("Info!")
logger.Debug("Debug!")
foo("xyzzy", "fnord")
}
问题是格式化程序。我终其一生都无法弄清楚将 Formatter 应用到的魔法咒语logger。如果我按原样取消注释,则不应用 JSON 格式。如果我把它写成
logger.Formatter = &logrus.JSONFormatter{}
我明白了
./foo.go:17:8: logger.Formatter 未定义(类型 *logrus.Entry 没有字段或方法 Formatter)
我误解了什么?
沧海一幻觉
相关分类