是否可以用logrus日志记录将“ msg”替换为“ message”

问题描述

因此,在使用logrus时,我需要记录输出具有message键而不是msg键,但是当我使用下面的代码时,我会得到两者,但是msg为空,如何配置logrus使用“消息”而不是“ 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","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上可以使用相同的替代。