I want to log the error but it displays all other data except the error field.
// Logger creation
log = zerolog.New(output).
Level(zerolog.Level(logLevel)).
With().
Stack().
Caller().
Timestamp().
Str("git_revision", gitRevision).
Str("go_version", buildInfo.GoVersion).
Logger()
// Calling logger
l = logger.Get()
reqIDRaw := middleware.GetReqID(r.Context())
l.Warn().
Str("requestID", reqIDRaw).
Str("method", r.Method).
Str("url", r.URL.Path).
Err(errors.Wrap(err, "bad request")).
Msg("bad request")
This gives the following output
2025-02-24T10:02:35+03:00 WRN internal/services/response/error_response.go:43 > bad request method=POST requestID=Kengos-MacBook-Pro.local/0hS9QB33oG-000001 url=/v1/auth/register
I've found the issue causing this.
// This is the `err` I wish to log
if err := validate.Validate.Struct(payload); err != nil {
// err becomes nil here
errResponse, err := utils.GenerateErrorMessages(err)
if err != nil {
utils.WriteJSON(w, http.StatusInternalServerError, err)
return
}
errorMessage := response.ErrorResponse{
Message: "Invalid request body",
Errors: errResponse,
}
// nil err is passed to response writer and not logged.
response.BadRequestErrorResponse(w, r, err, errorMessage)
return
}
I just need to change the use different variable names for the error.