admin管理员组

文章数量:1277360

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 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

Share Improve this question edited Feb 24 at 7:21 KengoWada asked Feb 24 at 7:16 KengoWadaKengoWada 252 silver badges6 bronze badges 3
  • The "bad request" log doesn't use the log logger you've defined above. You should post the definition of the logger used here logger.Get() – xflr6 Commented Feb 24 at 7:52
  • @xflr6 I can't update the question but I've posted an answer – KengoWada Commented Feb 24 at 8:24
  • @xflr6 I've found the issue. I was using err as a variable name for all errors and one function was turning it to nil. – KengoWada Commented Feb 24 at 8:31
Add a comment  | 

1 Answer 1

Reset to default 1

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.

本文标签: goZerolog logger does not display error field in the logsStack Overflow