【发布时间】:2021-03-01 12:06:32
【问题描述】:
Logrus 按字母顺序记录键,这是我想要和需要的,但我想编写一个测试以确保它不会更改,我尝试添加挂钩,但我认为我无法访问完整日志使用我使用WithFields 添加的自定义上下文,我只能获取消息记录示例
func TestSomething(t*testing.T){
logger, hook := test.NewNullLogger()
logger.WithField("correlationId","123").WithField("id","1").Info("hello")
assert.Equal(t, 1, len(hook.Entries))
assert.Equal(t, logrus.(Level, hook.LastEntry().Level)
assert.Equal(t, "Hello", hook.LastEntry().Message)
hook.Reset()
assert.Nil(t, hook.LastEntry())
}
我想测试message 在输出中出现在t 之前
log.SetFormatter(&log.JSONFormatter{
FieldMap: log.FieldMap{
log.FieldKeyMsg: "message",
log.FieldKeyTime: "t",
},
})
logger := log.WithFields(
log.Fields{
"id": context.id,
"correlationId": context.CorrelationId,
},
【问题讨论】:
-
地图是无序的,因此您无法测试顺序。如果日志包保证输出是有序的,那么测试日志包本身就不是你的代码关心的问题了。