github.com/hassieswift621/slog-grpc-mw (go): `grpc_slog` is a gRPC logging middleware backed by Slog loggers  It accepts a user-configured `slog.Logger` that will be used for logging completed gRPC calls. The same `slog.Logger` will be used for logging completed gRPC calls, and be populated into the `context.Context` passed into gRPC handler code.  On calling `StreamServerInterceptor` or `UnaryServerInterceptor` this logging middleware will add gRPC call information to the ctx so that it will be present on subsequent use of the `ctx_slog` logger.  If a deadline is present on the gRPC request the grpc.request.deadline tag is populated when the request begins. grpc.request.deadline is a string representing the time (RFC3339) when the current call will expire.  This package also implements request and response *payload* logging, both for server-side and client-side. These will be logged as structured `jsonpb` fields for every message received/sent (both unary and streaming). For that please use `Payload*Interceptor` functions. Please note that the user-provided function that determines whether to log the full request/response payload needs to be written with care, as this can significantly slow down gRPC.  Slog can also be made as a backend for gRPC library internals. For that use `ReplaceGrpcLoggerV2`.  *Server Interceptor* Below is a JSON formatted example of a log that would be logged by the server interceptor:  *Payload Interceptor* Below is a JSON formatted example of a log that would be logged by the payload interceptor:  Please see examples and tests for examples of use.  Initialization shows a relatively complex initialization sequence.    Initialization shows an initialization sequence with the duration field generation overridden.
Keywords: go|grpc|middleware|slog|structured-logging