是否可以使用 logrus 日志记录将 'msg' 换成 'message'

Is it possible to swap 'msg' for 'message' with logrus logging

所以当使用 Logrus 时我需要日志输出有 message 键而不是 msg 键,但是当我使用下面的代码时我得到了两个,但是 msg 是空,如何配置 logrus 以使用 'message' 而不是 'msg'?

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.

上可以使用相同的覆盖