登录
首页 >  Golang >  Go问答

能否用 logrus 记录器将“msg”替换为“message”

来源:stackoverflow

时间:2024-03-02 22:27:25 455浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《能否用 logrus 记录器将“msg”替换为“message”》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

因此,在使用 logrus 时,我需要日志输出具有 message 键而不是 msg 键,但是当我使用下面的代码时,我得到了两者,但 msg 为空,如何配置 logrus 以使用“消息”而不是“消息”?

contextlogger.withfield("logger_name",topic).withfield("message",messagestring).info()

这是将 .info() 留空时的日志输出 // .info() 日志记录到 msg

"logger_name": "logger","message": "log message","msg": "","time": "2020-08-12t15:14:48z"

我想要的是能够使用 .info(message) 并拥有

"logger_name": "logger","message": "log message","time": "2020-08-12T15:14:48Z"

是否可以更改 .info() 等的默认日志记录键?


解决方案


您可以使用 JSonFormatterfieldmap 字段来执行此操作:

    // fieldmap allows users to customize the names of keys for default fields.
    // as an example:
    // formatter := &jsonformatter{
    //      fieldmap: fieldmap{
    //       fieldkeytime:  "@timestamp",
    //       fieldkeylevel: "@level",
    //       fieldkeymsg:   "@message",
    //       fieldkeyfunc:  "@caller",
    //    },
    // }
    fieldmap fieldmap

这允许您覆盖默认字段名称,包括 msg

这是一个简短的示例(请参阅 playground):

package main

import (
    log "github.com/sirupsen/logrus"
)

func main() {
    log.setformatter(&log.jsonformatter{
        fieldmap: log.fieldmap{
            log.fieldkeymsg: "message",
        },
    })

    log.withfield("logger_name", "topic2").info("this is my message")
}

输出:

{"level":"info","logger_name":"topic2","message":"this is my message","time":"2009-11-10T23:00:00Z"}

TextFormatter 上也提供相同的覆盖。

终于介绍完啦!小伙伴们,这篇关于《能否用 logrus 记录器将“msg”替换为“message”》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>