Отказ от ответственности: я работал с go около ... дня. Я настоящий n00b здесь ...
Я хочу иметь logrus logger, который настроен с полями по умолчанию в 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 undefined (тип * logrus.Entry не имеет поля или метода Formatter)
Что я неправильно понял?