是否可以使用 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() 等的默认日志记录键?
您可以使用 JSonFormatter 的 FieldMap
字段:
// 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"}
上可以使用相同的覆盖
所以当使用 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() 等的默认日志记录键?
您可以使用 JSonFormatter 的 FieldMap
字段:
// 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"}
上可以使用相同的覆盖