Comments (4)
I'm happy to contribute a fix, but I'm not sure what the best solution is.
The simplest solution would be to override the fields in the context, but this would break the current API which allows you to manually override fields by setting them in the context before the logger is called.
Another solution could be to support multiple context markers, one for the default context and another for the user-provided context.
from go-grpc-middleware.
@bwplotka refactored these for the v2 release, unfortunately I don't know what the best solution is here either.
from go-grpc-middleware.
Thanks for reporting--especially before 2.0!
This is indeed surprising and wrong. We have to establish a policy for inheriting & overriding the fields from context. Initially I thought it would be easier if those would be immutable, but for such cases it's clearly wrong idea as e.g. component is changing all the time depends where we log from. Flipped in #616
from go-grpc-middleware.
Thanks for reporting--especially before 2.0!
Just glad I caught it in our logs 🙏🏼 .
This is indeed surprising and wrong. We have to establish a policy for inheriting & overriding the fields from context. Initially I thought it would be easier if those would be immutable, but for such cases it's clearly wrong idea as e.g. component is changing all the time depends where we log from. Flipped in #616
The more I think about it, the more I agree that new should override old (that's generally what you'd expect from Context
anyway). That being said, if support for overriding the fields is necessary, then I think the best option is to allow that to occur is via the WithFieldsFromContext
option.
from go-grpc-middleware.
Related Issues (20)
- Adding `grpc_code` label to prometheus `grpc_server_handling_seconds` metric HOT 6
- With HOT 1
- Support for connect go HOT 5
- "make test" and "make lint" ignore failures
- Support for WithSubsystem() HOT 5
- [retry-middleware] Stream is finished when retry timeout ends HOT 2
- Support loggging grpc status details HOT 1
- Add source and target endpoint as label for all client/server grpc metrics HOT 2
- Support ignore logging for v2(already attached PR) HOT 3
- Prometheus metrics label value inconsistency between Go and Java HOT 3
- [logging] disable option does not work with request/response fields HOT 6
- go-grpc-middleware/providers/openmetrics/v2 v2.0.0-rc.3 dependency of go-grpc-middleware/v2 v2.0.1 broken HOT 8
- Q: Logger migration HOT 2
- Support extensibility of retry condition
- [feat]: logging should loging grpc request msg HOT 1
- Example will log only first field HOT 3
- Add Capability to Override Base Timeout for Specific API HOT 1
- Use retry hooks for adding retry metrics
- logging.InjectFields does not work. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-grpc-middleware.