在我的Go应用程序中,我将错误登录转移到了一个单独的功能中
package logging
import "github.com/rs/zerolog"
func LogError(logger zerolog.Logger, err error) {
logger.Error().Err(err).Msg("")
}
并希望创建一个小型测试以确保引发了错误日志(log)事件.出于再现的目的,我不会显示测试文件,而是显示来自操场https://go.dev/play/p/Jnyz51JemTh的代码
package main
import (
"errors"
"fmt"
"github.com/rs/zerolog"
)
func main() {
logger := zerolog.Nop()
testError := errors.New("test error")
logHook := &logHook{}
logger.Hook(logHook)
LogError(logger, testError)
amountOfLogEvents := len(logHook.logEvents)
fmt.Printf("预期的日志(log)事件数量:1\nActual amount of log events: %v", amountOfLogEvents)
// TODO inspect logHook.logEvents[0]
}
func LogError(logger zerolog.Logger, err error) {
logger.Error().Err(err).Msg("")
}
type logHook struct {
logEvents []zerolog.Event
}
func (logHook *logHook) Run(logEvent *zerolog.Event, level zerolog.Level, message string) {
logHook.logEvents = append(logHook.logEvents, *logEvent)
}
您应该会看到输出
预期的日志(log)事件数量:1
日志(log)事件的实际数量:0
我想我可以创建一个定制的钩子来捕捉事件并判断它.不幸的是,我正在与两件事作斗争
- 正在判断错误、消息...从一张
zerolog.Event
英镑开始,对我来说不起作用.我找不到任何与此对应的字段或函数 - 测试失败是因为
amountOfLogEvents
为空,尽管我预计它会有一个事件
你知道哪里出了问题吗?知道如何修复吗?