start implementing gw serve mux support
This commit is contained in:
51
pkg/srv/grpc/logger.go
Normal file
51
pkg/srv/grpc/logger.go
Normal file
@ -0,0 +1,51 @@
|
||||
package grpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
grpclogging "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
// A grpc logging middleware compatible logger
|
||||
// implementation using a zerolog logger, either from
|
||||
// the global logger or a context logger
|
||||
type GRPCLogger struct {
|
||||
logger zerolog.Logger
|
||||
}
|
||||
|
||||
// Returns a grpcLogger using the global zerolog Logger
|
||||
func NewGRPCLogger() *GRPCLogger {
|
||||
return &GRPCLogger{logger: log.Logger}
|
||||
}
|
||||
|
||||
// Returns a grpcLogger using the zerolog logger in the provided context
|
||||
func NewGRPCContextLogger(ctx context.Context) *GRPCLogger {
|
||||
logger := log.Ctx(ctx)
|
||||
return &GRPCLogger{logger: *logger}
|
||||
}
|
||||
|
||||
// Log logs the fields for given log level. We can assume users (middleware library) will put fields in pairs and
|
||||
// those will be unique.
|
||||
func (l *GRPCLogger) Log(ctx context.Context, level grpclogging.Level, msg string, fields ...any) {
|
||||
var event *zerolog.Event
|
||||
|
||||
switch level {
|
||||
case grpclogging.LevelDebug:
|
||||
event = l.logger.Debug()
|
||||
case grpclogging.LevelInfo:
|
||||
event = l.logger.Info()
|
||||
case grpclogging.LevelWarn:
|
||||
event = l.logger.Warn()
|
||||
case grpclogging.LevelError:
|
||||
event = l.logger.Error()
|
||||
default:
|
||||
event = l.logger.Warn().
|
||||
Int("unknowngrpcloglevel", int(level))
|
||||
}
|
||||
|
||||
event.Ctx(ctx)
|
||||
event.Fields(fields)
|
||||
event.Msg(msg)
|
||||
}
|
Reference in New Issue
Block a user