我正在使用Logrus,在日志中显示&字符时遇到了一个问题:
logger.WithFields(logrus.Fields{
"value": "value&value",
}).Info("GET")这将打印value\u0026value,即&的十六进制值,而不是&本身。
有人知道怎么解决吗?
如果这可能有帮助,下面是如何初始化记录器:
import (
"log"
"github.com/getsentry/sentry-go"
sentry_hook "github.com/onrik/logrus/sentry"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
func newLogger() *logrus.Entry {
log := logrus.StandardLogger()
log.SetFormatter(&logrus.JSONFormatter{})
level, err := logrus.ParseLevel(config.LogLevel)
if err != nil {
log.Fatalf("%+v", errors.WithStack(err))
}
log.SetLevel(level)
hook := newSentryHook()
log.AddHook(hook)
entry := logrus.NewEntry(log)
return entry
}
func newSentryHook() *sentry_hook.Hook {
if err := sentry.Init(sentry.ClientOptions{Dsn: config.SentryDSN}); err != nil {
log.Fatalf("%+v", errors.WithStack(err))
}
hook, err := sentry_hook.NewHook(sentry_hook.Options{Dsn: config.SentryDSN}, logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel)
if err != nil {
log.Fatalf("%+v", errors.WithStack(err))
}
return hook
}发布于 2020-07-21 09:16:46
默认行为是转义&、<和>到\u 0026、\u003c和\u003e,以避免在HTML中嵌入JSON时可能出现的某些安全问题。 在非HTML设置中,转义会干扰输出的可读性,SetEscapeHTML(false)将禁用此行为。
Logrus在JSONFormatter.DisableHTMLEscape场中公开此设置。若要禁用HTML转义,请将其设置为true:
log.SetFormatter(&logrus.JSONFormatter{
DisableHTMLEscape: true,
})https://stackoverflow.com/questions/63010085
复制相似问题