Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request Logging #311

Merged
merged 31 commits into from
Oct 2, 2020
Merged

Request Logging #311

merged 31 commits into from
Oct 2, 2020

Conversation

yashrsharma44
Copy link
Collaborator

@yashrsharma44 yashrsharma44 commented Jun 29, 2020

This PR achieves to add in a Request/Response logger in grpc_middlewares v2 branch.

Fixes #310

Current TODO -

If any suggestions are there, feel free to add in more 😅

Signed-off-by: Yash Sharma yashrsharma44@gmail.com

Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I still don't get the need for separate logger.

We have already one reporter. One Request is needed? the reporter is also request.

The only missing log line would be on start which we can do based on decider, no? 🤔

interceptors/logging/logging.go Outdated Show resolved Hide resolved
interceptors/logging/request_logging.go Outdated Show resolved Hide resolved
Copy link

@kakkoyun kakkoyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So far so good. I've left a couple of suggestions.

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, not sure about it either, will take a look closer how we could implement it and let's talk on our 1:2 cc @kakkoyun

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
@bwplotka
Copy link
Collaborator

bwplotka commented Jul 2, 2020

There is easy way how to do what we want btw (:

@yashrsharma44
Copy link
Collaborator Author

yashrsharma44 commented Jul 6, 2020

After having a 1:2 call with @bwplotka and @kakkoyun, we decided to modify the objectives of this PR -

  • Having a precall setup before the actual logging starts
    • Decider to check if logging should be enabled (Implemented at the interceptor level. If not enabled, we return a NoopReporter)
    • Decider to check if logging should be enabled for a given method( To be implemented using the options of the grpc.Options)
    • Log the starting messages (We check using a boolean if the current message is the first and log it in the PostMsgSend/PostMsgRecv level)
  • PostMsgSend / PostMsgRecv can log the payload (currently to be worked on in the next PR)
  • PostCall to log the errors and corresponding error-logs

This is a bit different from the original implementation because in the earlier PR, we were logging all the messages of the stream, which is quite verbose and irrelevant.

Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, looking awesome, just minor nits!

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/logging.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors_test.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
@yashrsharma44 yashrsharma44 marked this pull request as ready for review July 13, 2020 12:40
@yashrsharma44
Copy link
Collaborator Author

yashrsharma44 commented Jul 13, 2020

Hey Everyone, this PR is ready to be merged.
Would love a final round of review - @kakkoyun @bwplotka @johanbrandhorst

@yashrsharma44 yashrsharma44 force-pushed the request-logging branch 4 times, most recently from 564b8f0 to fddea8d Compare July 13, 2020 13:23
Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I somehow don't see the latest revision of this, let's discuss

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
@yashrsharma44
Copy link
Collaborator Author

Tests failing due to - #319

Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's really LGTM, just small nits on the actual message logged (: and maybe decider.

This PR shows that we might be missing details in the initial design about the "interface" of this change.

The interface is really:

  • how user will configure
  • what users will see on different configuration.

Can we add some design section for it to make it clear? (: It would avoid some confusion.

IMO:

  • Human readable consistent message, and having all variables as fields (e.g type, method as well!)
  • finished call and started call is really enough if we would have component:server field or something, right?
  • What about single decider:
type LogDecision struct {
     LogStarted, LogFinished bool
}

type Decider func (....) Decision

The alternative is:

type Decider int
const (
    NoLog Decider = iota
    LogStarted
    LogFinished
  
)

WDYT? (:

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/options.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
@yashrsharma44 yashrsharma44 changed the title Request/Response Logging Request Logging Jul 22, 2020
@yashrsharma44
Copy link
Collaborator Author

yashrsharma44 commented Jul 23, 2020

Changes made uptil now -

  • Human Readable Messages - All the log entries are changed to use space instead of _.
  • Using key-value pairs for storing the kind, type and component.
  • Changed to start call and finished call.

Changes that need to be made -

  • Add a design/example section for using the API(Mentioned in my original TODO)
  • Single Decider with multiple options, and an ENUM based interface to configure the options in an easy way.

@yashrsharma44
Copy link
Collaborator Author

yashrsharma44 commented Jul 23, 2020

I would like to extend the Decider as using a struct instead of ENUM, because -

  • We would have 2^2 possibilities, so we need to keep 4 variables for checking the option of logging.
  • We can use a struct for storing two variables to check if we want to log at start and end. This way, with minimal fuss, all the conditions are checked.

Interface of new Decider -

type LogDecision struct {
     LogStarted, LogFinished bool
}
func NewLogDecision(LogStarted, LogFinished bool) *LogDecision {
     return &LogDecision {
          LogStarted : LogStarted,
          LogFinished : LogFinished,
     }
}

type Decider func (methodName string, err error) *LogDecision

// Example implementation of the decider
func LogDecider(methodName string, err error) *LogDecision {
          // Have condition check
          return NewLogDecision(logStart, LogFinish)
}

WDYT?

Copy link

@kakkoyun kakkoyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
@kakkoyun
Copy link

@yashrsharma44 Ok, the interface is apparently different than I had assumed so you can ignore my comments or even better we can update the interface since this is a v2 branch.

Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some notes after 1:1

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors_test.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors_test.go Outdated Show resolved Hide resolved
interceptors/logging/interceptors_test.go Show resolved Hide resolved
@bwplotka
Copy link
Collaborator

Looks like we want decider to NOT have error and do adaptive logging base on error, using errCode to Log Level, 💪

Looks like we are going into simpler functions, which means I think I would vote for enums

@yashrsharma44
Copy link
Collaborator Author

Once we fixate on the Decider implementation, I can start with the examples 🤓

Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, Looking good! Small things only.

interceptors/logging/interceptors.go Outdated Show resolved Hide resolved
interceptors/logging/logging.go Show resolved Hide resolved
interceptors/logging/logging.go Show resolved Hide resolved
…rom the server side

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
…rt and end of request and response start messages

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
* Unary Server testing
* Stream server testing
* Unary Error testing

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>

nitpickings

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>

more nitpickings

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
* return early for multiple cases
* intialize the level early

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
* Now enabling logging logs out all the details of the request/response
* Breaks the initial logging api

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
… encoding

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
*  Human Readable Messages - All the log entries are changed to use space instead of `_`.
* Using key-value pairs for storing the kind, type and component.
* Changed to start call and finished call.

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
* Abstracted out repititive fields into a single method
* Added test fields, instead of creating a whole suite
* Changed field values to adhere the common convention

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
…suite rather than creating a new suite

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
* Currently 3 types of logging configured
* NoLogCall - No logging
* LogFinishCall - For logging the end of the call
* LogAllCall - For logging the start and end of the call

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>

More comments removal

Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Signed-off-by: Yash Sharma <yashrsharma44@gmail.com>
Copy link
Collaborator

@bwplotka bwplotka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tiny nit only, we can fix that later (:

LGTM, Thanks! 👍

code := c.opts.codeFunc(err)
logger = logger.With("grpc.code", code.String())
if err != nil {
logger = logger.With("grpc.error", fmt.Sprintf("%v", err))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
logger = logger.With("grpc.error", fmt.Sprintf("%v", err))
logger = logger.With("grpc.error", err.Error())

@bwplotka bwplotka merged commit 73cf2ae into grpc-ecosystem:v2 Oct 2, 2020
@@ -47,12 +60,12 @@ func DefaultErrorToCode(err error) codes.Code {
}

// Decider function defines rules for suppressing any interceptor logs
type Decider func(fullMethodName string, err error) bool
type Decider func(fullMethodName string) Decision
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would have been nice not to have skipped the error parameter here. The logging can also be configured using the error as well,(since status code can be derived from the response error).

yurishkuro referenced this pull request in jaegertracing/jaeger Jun 13, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/grpc-ecosystem/go-grpc-middleware](https://togithub.com/grpc-ecosystem/go-grpc-middleware)
| `v1.4.0` -> `v2.1.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v1.4.0/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgrpc-ecosystem%2fgo-grpc-middleware/v1.4.0/v2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>grpc-ecosystem/go-grpc-middleware
(github.com/grpc-ecosystem/go-grpc-middleware)</summary>

###
[`v2.1.0`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.1.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v2.0.1...v2.1.0)

#### What's Changed

- Support for subsystem in grpc prometheus counter and histogram metrics
by [@&#8203;rohsaini](https://togithub.com/rohsaini) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/643](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/643)
- doc: update client interceptors chaining example with grpc functions
by [@&#8203;dethi](https://togithub.com/dethi) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/669](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/669)
- adds fields from durationFieldFunc to request/response log entries by
[@&#8203;vroldanbet](https://togithub.com/vroldanbet) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/670](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/670)
- add doc for disabling log opts by
[@&#8203;coleenquadros](https://togithub.com/coleenquadros) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/680](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/680)
- Middleware for determining the real ip of the client by
[@&#8203;MadsRC](https://togithub.com/MadsRC) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/682](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/682)
- protovalidate: add option to ignore certain message types by
[@&#8203;igor-tsiglyar](https://togithub.com/igor-tsiglyar) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/684](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/684)
- Update README.md by [@&#8203;zeroboo](https://togithub.com/zeroboo) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/688](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/688)
- Fix `InitializeMetrics` signature to allow use with `xds.GRPCServer`
by [@&#8203;bozaro](https://togithub.com/bozaro) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/689](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/689)
- Support retriable func condition by
[@&#8203;tamayika](https://togithub.com/tamayika) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/687](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/687)
- Extend realip parsing of GRPC peer address to handle IPv6 by
[@&#8203;surik](https://togithub.com/surik) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/692](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/692)
- Fix logging Example : log only first field by
[@&#8203;arckadious](https://togithub.com/arckadious) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/694](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/694)
- Extent realip interceptors with ip selection based on proxy count and
list by [@&#8203;surik](https://togithub.com/surik) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/695](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/695)
- Fix for vulnerability CVE-2023-44487 by
[@&#8203;vkaushik](https://togithub.com/vkaushik) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/696](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/696)

#### New Contributors

- [@&#8203;rohsaini](https://togithub.com/rohsaini) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/643](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/643)
- [@&#8203;dethi](https://togithub.com/dethi) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/669](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/669)
- [@&#8203;vroldanbet](https://togithub.com/vroldanbet) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/670](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/670)
- [@&#8203;MadsRC](https://togithub.com/MadsRC) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/682](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/682)
- [@&#8203;igor-tsiglyar](https://togithub.com/igor-tsiglyar) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/684](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/684)
- [@&#8203;zeroboo](https://togithub.com/zeroboo) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/688](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/688)
- [@&#8203;bozaro](https://togithub.com/bozaro) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/689](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/689)
- [@&#8203;tamayika](https://togithub.com/tamayika) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/687](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/687)
- [@&#8203;surik](https://togithub.com/surik) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/692](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/692)
- [@&#8203;arckadious](https://togithub.com/arckadious) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/694](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/694)
- [@&#8203;vkaushik](https://togithub.com/vkaushik) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/696](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/696)

**Full Changelog**:
grpc-ecosystem/go-grpc-middleware@v2.0.1...v2.1.0

###
[`v2.0.1`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v2.0.0...v2.0.1)

#### What's Changed

- Fix outdated 'make proto' command by
[@&#8203;takp](https://togithub.com/takp) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/623](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/623)
- Fix linting errors by [@&#8203;takp](https://togithub.com/takp) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/624](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/624)
- Logging: Add missing variadic operator for fields by
[@&#8203;olivierlemasle](https://togithub.com/olivierlemasle) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/629](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/629)
- feat: Support extracting fields from CallMeta by
[@&#8203;fsaintjacques](https://togithub.com/fsaintjacques) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/628](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/628)
- Fix "make test" and "make lint" by
[@&#8203;olivierlemasle](https://togithub.com/olivierlemasle) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/627](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/627)
- Do not set timeout for stream initialization by
[@&#8203;DavyJohnes](https://togithub.com/DavyJohnes) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/645](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/645)
- Add logging option to disable fields in log entry by
[@&#8203;coleenquadros](https://togithub.com/coleenquadros) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/631](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/631)
- Update logging adapter docs by
[@&#8203;aboryslawski](https://togithub.com/aboryslawski) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/647](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/647)

#### New Contributors

- [@&#8203;takp](https://togithub.com/takp) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/623](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/623)
- [@&#8203;olivierlemasle](https://togithub.com/olivierlemasle) made
their first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/629](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/629)
- [@&#8203;fsaintjacques](https://togithub.com/fsaintjacques) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/628](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/628)
- [@&#8203;DavyJohnes](https://togithub.com/DavyJohnes) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/645](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/645)
- [@&#8203;coleenquadros](https://togithub.com/coleenquadros) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/631](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/631)
- [@&#8203;aboryslawski](https://togithub.com/aboryslawski) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/647](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/647)

**Full Changelog**:
grpc-ecosystem/go-grpc-middleware@v2.0.0...v2.0.1

###
[`v2.0.0`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.0.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v1.4.0...v2.0.0)

This is the first stable release of the new v2 release branch 🎉

Many of the interceptors have been rewritten from scratch and the
project has been upgraded to use the Go Protobuf v2 API.

See the project README for details and migration guide. Thanks to all
contributors who made this possible! 💪🏽

#### What's Changed

- Initial change for v2. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/276](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/276)
- Updated README with note that it's under development. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/278](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/278)
- Fix typo in field extractor (splices -> slices)
([#&#8203;287](https://togithub.com/grpc-ecosystem/go-grpc-middleware/issues/287))
by [@&#8203;bvwells](https://togithub.com/bvwells) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/289](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/289)
- Moved imports to v2; Moved to Go 1.14.2 by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/290](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/290)
- Formatted code; Added goimports to Makefile, Renamed pb_testproto to
testpb. by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/291](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/291)
- Fixed providers go modules, examples and consistency. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/292](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/292)
- added example for AuthFuncOverride v2 branch by
[@&#8203;tegk](https://togithub.com/tegk) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/294](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/294)
- Added some description of the Makefile in the contributing.md by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/298](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/298)
- v2: Add support for the zerolog logging provider by
[@&#8203;irridia](https://togithub.com/irridia) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/299](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/299)
- proto: fix gogoproto import by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/302](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/302)
- Retry dial and connection errors for grpc stream. by
[@&#8203;kartlee](https://togithub.com/kartlee) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/308](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/308)
- Moved to GH actions; Added lint; Added issue/PR templates. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/296](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/296)
- inline localhost certificate into go file by
[@&#8203;bmon](https://togithub.com/bmon) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/318](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/318)
- Update streaming interceptor example by
[@&#8203;G07cha](https://togithub.com/G07cha) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/322](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/322)
- Do not stop retrying based on earlier good message from the stream by
[@&#8203;kartlee](https://togithub.com/kartlee) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/323](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/323)
- test certs - cherry-pick PR325 on v2 by
[@&#8203;dmitris](https://togithub.com/dmitris) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/331](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/331)
- add all make target, reword instructions by
[@&#8203;dmitris](https://togithub.com/dmitris) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/335](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/335)
- remove 1.12.x from build config for consistency with master by
[@&#8203;dmitris](https://togithub.com/dmitris) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/337](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/337)
- \[v2] Fix the special case for jaeger format traceid extraction by
[@&#8203;nvx](https://togithub.com/nvx) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/340](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/340)
- \[v2] Fix ctxtags TagBasedRequestFieldExtractor extracting from fields
in a oneof by [@&#8203;nvx](https://togithub.com/nvx) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/339](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/339)
- Request Logging by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/311](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/311)
- Bug fix for data race by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/354](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/354)
- make ratelimit interface context aware by
[@&#8203;xinxiao](https://togithub.com/xinxiao) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/367](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/367)
- Add error param to the decider method of logging middleware by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/372](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/372)
- \[v2] Add skip interceptor by
[@&#8203;XSAM](https://togithub.com/XSAM) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/364](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/364)
- Chain middleware by
[@&#8203;drewwells](https://togithub.com/drewwells) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/385](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/385)
- Update travis ci badget to Github actions badge. by
[@&#8203;drewwells](https://togithub.com/drewwells) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/384](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/384)
- Upgraded proto related deps: grpc and protobuf; removed gogo from
core. by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/321](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/321)
- improve v2 rate-limiter by
[@&#8203;MalloZup](https://togithub.com/MalloZup) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/380](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/380)
- Moved to buf; Added buf lint; Fixed ping service to match standards; …
by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/383](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/383)
- Add timer interface for OpenMetrics(Prometheus) Provider by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/387](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/387)
- \[Rate-limit provider]: Add token bucket implementation of
rate-limiter by [@&#8203;MalloZup](https://togithub.com/MalloZup) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/386](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/386)
- Add OpenMetrics(Prometheus) in the provider module by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/379](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/379)
- v2: Client unary interceptor timeout on v2 branch by
[@&#8203;instabledesign](https://togithub.com/instabledesign) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/330](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/330)
- add onRetryCallback callback function by
[@&#8203;shamil](https://togithub.com/shamil) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/405](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/405)
- v2: validator support for protoc-gen-validate 0.6.0 by
[@&#8203;danielhochman](https://togithub.com/danielhochman) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/418](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/418)
- v2: Refactor metrics interceptor and fix tests by
[@&#8203;ash2k](https://togithub.com/ash2k) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/413](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/413)
- Support customization of timestamp format (v2 branch) by
[@&#8203;stanhu](https://togithub.com/stanhu) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/399](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/399)
- Fixed misleading comments in the interceptor file by
[@&#8203;iamrajiv](https://togithub.com/iamrajiv) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/424](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/424)
- v2: Switch from github.com/go-kit/kit to github.com/go-kit/log
interfaces by [@&#8203;liggitt](https://togithub.com/liggitt) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/427](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/427)
- v2: Add support for the phuslog logging provider by
[@&#8203;ogimenezb](https://togithub.com/ogimenezb) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/425](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/425)
- v2:providers/zap: fix caller annotation by
[@&#8203;jkawamoto](https://togithub.com/jkawamoto) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/432](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/432)
- Added Dependabot by [@&#8203;iamrajiv](https://togithub.com/iamrajiv)
in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/376](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/376)
- Added a Copyright check in the Makefile by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/420](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/420)
- Cleanup v2 with some updates by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/419](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/419)
- openmetrics: forward server context by
[@&#8203;amenzhinsky](https://togithub.com/amenzhinsky) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/434](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/434)
- recovery: change the default behavior by
[@&#8203;amenzhinsky](https://togithub.com/amenzhinsky) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/439](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/439)
- Add all-validator support by
[@&#8203;leventeliu](https://togithub.com/leventeliu) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/443](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/443)
- Remove backoffutils and added the files to retry package by
[@&#8203;yashrsharma44](https://togithub.com/yashrsharma44) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/390](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/390)
- v2:interceptors/logging: allow to separate request response payload
logging by [@&#8203;michaljemala](https://togithub.com/michaljemala) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/442](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/442)
- Removed tags; Simplified interceptor code; Added logging fields
editability. by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/394](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/394)
- InterceptorTestSuite client connection optimize by
[@&#8203;HUSTtoKTH](https://togithub.com/HUSTtoKTH) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/455](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/455)
- Remove opentracing from go.mod by
[@&#8203;jpkrohling](https://togithub.com/jpkrohling) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/477](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/477)
- Replace two old Go versions with two new ones by
[@&#8203;jpkrohling](https://togithub.com/jpkrohling) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/478](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/478)
- Move util/metautils to root-level package metadata, fixes
[#&#8203;392](https://togithub.com/grpc-ecosystem/go-grpc-middleware/issues/392)
by [@&#8203;rahulkhairwar](https://togithub.com/rahulkhairwar) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/474](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/474)
- Remove data race from zerolog provider by
[@&#8203;ecordell](https://togithub.com/ecordell) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/487](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/487)
- Update provider/kit by
[@&#8203;metalmatze](https://togithub.com/metalmatze) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/490](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/490)
- Refactor tracing interceptor by
[@&#8203;XSAM](https://togithub.com/XSAM) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/450](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/450)
- Add opentracing provider by [@&#8203;XSAM](https://togithub.com/XSAM)
in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/492](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/492)
- update phuslog to fix typo by
[@&#8203;ogimenezb](https://togithub.com/ogimenezb) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/499](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/499)
- Added logr as logging Library provider by
[@&#8203;mcdoker18](https://togithub.com/mcdoker18) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/510](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/510)
- ✨ new feat: selector middleware by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/511](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/511)
- Add 1.18.x and 1.19.x unit tests by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/513](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/513)
- change the doc.go to the latest format by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/512](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/512)
- fix provider examples by
[@&#8203;forsaken628](https://togithub.com/forsaken628) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/529](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/529)
- docs: add `logging.InjectFields` usage description by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/541](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/541)
- Bump golang.org/x/net from 0.0.0-20201021035429-f5854403a974 to 0.7.0
by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/537](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/537)
- v2: All for v2: Exemplars, Cleanup, Docs, Lint, Proto upgrades and
more by [@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/543](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/543)
- \[interceptors/validator] feat: add error logging in validator by
[@&#8203;rohanraj7316](https://togithub.com/rohanraj7316) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/544](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/544)
- fix auto-generated docs by
[@&#8203;peczenyj](https://togithub.com/peczenyj) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/548](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/548)
- fix vulnerability GO-2022-0603 by
[@&#8203;peczenyj](https://togithub.com/peczenyj) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/549](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/549)
- add support to trace on grpc_logrus.DefaultMessageProducer by
[@&#8203;peczenyj](https://togithub.com/peczenyj) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/547](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/547)
- Simplified logging middleware; Fields are now "any" type; Moved
logging providers to examples only. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/552](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/552)
- Removed deciders; Cleaned up validators. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/554](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/554)
- Adjustments to README and consistency of callback options. by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/555](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/555)
- Merge v2 into main (with -X theirs) by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/556](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/556)
- Bump golang.org/x/net from 0.5.0 to 0.7.0 in /providers/prometheus by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/561](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/561)
- Fix overwritten logger in zerolog example by
[@&#8203;longshine](https://togithub.com/longshine) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/574](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/574)
- Changed for for mapping fields, different var for logger in zap
example by [@&#8203;MichalFikejs](https://togithub.com/MichalFikejs) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/581](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/581)
- cleanup: no cap definition required by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/582](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/582)
- providers/prometheus: Add WithHistogramOpts for native histograms by
[@&#8203;metalmatze](https://togithub.com/metalmatze) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/584](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/584)
- fix: Refactor logger initialization in example_test.go by
[@&#8203;aimuz](https://togithub.com/aimuz) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/580](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/580)
- Minor code cleanups by [@&#8203;ash2k](https://togithub.com/ash2k) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/586](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/586)
- fix prometheus interceptors not converting context errors to gRPC
codes by [@&#8203;vtermanis](https://togithub.com/vtermanis) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/571](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/571)
- Update README.md by [@&#8203;bwplotka](https://togithub.com/bwplotka)
in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/600](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/600)
- Update PULL_REQUEST_TEMPLATE.md by
[@&#8203;bwplotka](https://togithub.com/bwplotka) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/601](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/601)
- Add Client rate limit interceptors 520 by
[@&#8203;rahulkhairwar](https://togithub.com/rahulkhairwar) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/599](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/599)
- Use default go errors package instead of github.com/pkg/errors by
[@&#8203;rifkyazizf](https://togithub.com/rifkyazizf) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/608](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/608)
- fix bug : should drain channel of timer after stop by
[@&#8203;ikenchina](https://togithub.com/ikenchina) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/612](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/612)
- feat: add interceptor for bufbuild/protovalidate by
[@&#8203;gvencadze](https://togithub.com/gvencadze) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/614](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/614)
- Enhancement: Introduce Option Interface for Future Interceptor
Customization by
[@&#8203;elliotmjackson](https://togithub.com/elliotmjackson) in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/615](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/615)

#### New Contributors

- [@&#8203;irridia](https://togithub.com/irridia) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/299](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/299)
- [@&#8203;xinxiao](https://togithub.com/xinxiao) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/367](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/367)
- [@&#8203;XSAM](https://togithub.com/XSAM) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/364](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/364)
- [@&#8203;MalloZup](https://togithub.com/MalloZup) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/380](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/380)
- [@&#8203;instabledesign](https://togithub.com/instabledesign) made
their first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/330](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/330)
- [@&#8203;shamil](https://togithub.com/shamil) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/405](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/405)
- [@&#8203;ash2k](https://togithub.com/ash2k) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/413](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/413)
- [@&#8203;ogimenezb](https://togithub.com/ogimenezb) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/425](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/425)
- [@&#8203;amenzhinsky](https://togithub.com/amenzhinsky) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/434](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/434)
- [@&#8203;leventeliu](https://togithub.com/leventeliu) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/443](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/443)
- [@&#8203;michaljemala](https://togithub.com/michaljemala) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/442](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/442)
- [@&#8203;HUSTtoKTH](https://togithub.com/HUSTtoKTH) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/455](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/455)
- [@&#8203;jpkrohling](https://togithub.com/jpkrohling) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/477](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/477)
- [@&#8203;rahulkhairwar](https://togithub.com/rahulkhairwar) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/474](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/474)
- [@&#8203;ecordell](https://togithub.com/ecordell) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/487](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/487)
- [@&#8203;metalmatze](https://togithub.com/metalmatze) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/490](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/490)
- [@&#8203;mcdoker18](https://togithub.com/mcdoker18) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/510](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/510)
- [@&#8203;aimuz](https://togithub.com/aimuz) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/511](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/511)
- [@&#8203;forsaken628](https://togithub.com/forsaken628) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/529](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/529)
- [@&#8203;dependabot](https://togithub.com/dependabot) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/537](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/537)
- [@&#8203;rohanraj7316](https://togithub.com/rohanraj7316) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/544](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/544)
- [@&#8203;peczenyj](https://togithub.com/peczenyj) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/548](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/548)
- [@&#8203;longshine](https://togithub.com/longshine) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/574](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/574)
- [@&#8203;MichalFikejs](https://togithub.com/MichalFikejs) made their
first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/581](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/581)
- [@&#8203;vtermanis](https://togithub.com/vtermanis) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/571](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/571)
- [@&#8203;rifkyazizf](https://togithub.com/rifkyazizf) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/608](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/608)
- [@&#8203;ikenchina](https://togithub.com/ikenchina) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/612](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/612)
- [@&#8203;gvencadze](https://togithub.com/gvencadze) made their first
contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/614](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/614)
- [@&#8203;elliotmjackson](https://togithub.com/elliotmjackson) made
their first contribution in
[https://github.com/grpc-ecosystem/go-grpc-middleware/pull/615](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/615)

**Full Changelog**:
grpc-ecosystem/go-grpc-middleware@v1.4.0...v2.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/jaegertracing/jaeger).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->

---------

Signed-off-by: Mend Renovate <bot@renovateapp.com>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Co-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>
Co-authored-by: Yuri Shkuro <github@ysh.us>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

v2: Feature Request : Request/Response Logging
4 participants