首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logrus转义符号和字符

Logrus转义符号和字符
EN

Stack Overflow用户
提问于 2020-07-21 08:04:42
回答 1查看 896关注 0票数 2

我正在使用Logrus,在日志中显示&字符时遇到了一个问题:

代码语言:javascript
复制
logger.WithFields(logrus.Fields{
        "value": "value&value",
}).Info("GET")

这将打印value\u0026value,即&的十六进制值,而不是&本身。

有人知道怎么解决吗?

如果这可能有帮助,下面是如何初始化记录器:

代码语言:javascript
复制
    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
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 09:16:46

这是json包的默认行为。

默认行为是转义&、<和>到\u 0026、\u003c和\u003e,以避免在HTML中嵌入JSON时可能出现的某些安全问题。 在非HTML设置中,转义会干扰输出的可读性,SetEscapeHTML(false)将禁用此行为。

Logrus在JSONFormatter.DisableHTMLEscape场中公开此设置。若要禁用HTML转义,请将其设置为true:

代码语言:javascript
复制
log.SetFormatter(&logrus.JSONFormatter{
    DisableHTMLEscape: true,
})
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63010085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档