mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-04-20 15:35:55 -04:00
Fix grpcLogger level enablement
Signed-off-by: Daniel Weiße <dw@edgeless.systems>
This commit is contained in:
parent
50c2eb78ba
commit
22ad5899a7
@ -19,24 +19,28 @@ import (
|
||||
|
||||
func replaceGRPCLogger(log *slog.Logger) {
|
||||
gl := &grpcLogger{
|
||||
logger: log.With(slog.String("system", "grpc"), slog.Bool("grpc_log", true)),
|
||||
logger: log,
|
||||
verbosity: 0,
|
||||
}
|
||||
grpclog.SetLoggerV2(gl)
|
||||
}
|
||||
|
||||
func (l *grpcLogger) log(level slog.Level, args ...interface{}) {
|
||||
var pcs [1]uintptr
|
||||
runtime.Callers(3, pcs[:])
|
||||
r := slog.NewRecord(time.Now(), level, fmt.Sprint(args...), pcs[0])
|
||||
_ = l.logger.Handler().Handle(context.Background(), r)
|
||||
if l.logger.Enabled(context.Background(), level) {
|
||||
var pcs [1]uintptr
|
||||
runtime.Callers(3, pcs[:])
|
||||
r := slog.NewRecord(time.Now(), level, fmt.Sprint(args...), pcs[0])
|
||||
_ = l.logger.Handler().Handle(context.Background(), r)
|
||||
}
|
||||
}
|
||||
|
||||
func (l *grpcLogger) logf(level slog.Level, format string, args ...interface{}) {
|
||||
var pcs [1]uintptr
|
||||
runtime.Callers(3, pcs[:])
|
||||
r := slog.NewRecord(time.Now(), level, fmt.Sprintf(format, args...), pcs[0])
|
||||
_ = l.logger.Handler().Handle(context.Background(), r)
|
||||
if l.logger.Enabled(context.Background(), level) {
|
||||
var pcs [1]uintptr
|
||||
runtime.Callers(3, pcs[:])
|
||||
r := slog.NewRecord(time.Now(), level, fmt.Sprintf(format, args...), pcs[0])
|
||||
_ = l.logger.Handler().Handle(context.Background(), r)
|
||||
}
|
||||
}
|
||||
|
||||
type grpcLogger struct {
|
||||
|
@ -13,45 +13,45 @@ import (
|
||||
|
||||
// LevelHandler copied from the official LevelHandler example in the slog package documentation.
|
||||
|
||||
// LevelHandler wraps a Handler with an Enabled method
|
||||
// levelHandler wraps a Handler with an Enabled method
|
||||
// that returns false for levels below a minimum.
|
||||
type LevelHandler struct {
|
||||
type levelHandler struct {
|
||||
level slog.Leveler
|
||||
handler slog.Handler
|
||||
}
|
||||
|
||||
// NewLevelHandler returns a LevelHandler with the given level.
|
||||
// newLevelHandler returns a LevelHandler with the given level.
|
||||
// All methods except Enabled delegate to h.
|
||||
func NewLevelHandler(level slog.Leveler, h slog.Handler) *LevelHandler {
|
||||
func newLevelHandler(level slog.Leveler, h slog.Handler) *levelHandler {
|
||||
// Optimization: avoid chains of LevelHandlers.
|
||||
if lh, ok := h.(*LevelHandler); ok {
|
||||
if lh, ok := h.(*levelHandler); ok {
|
||||
h = lh.Handler()
|
||||
}
|
||||
return &LevelHandler{level, h}
|
||||
return &levelHandler{level, h}
|
||||
}
|
||||
|
||||
// Enabled implements Handler.Enabled by reporting whether
|
||||
// level is at least as large as h's level.
|
||||
func (h *LevelHandler) Enabled(_ context.Context, level slog.Level) bool {
|
||||
func (h *levelHandler) Enabled(_ context.Context, level slog.Level) bool {
|
||||
return level >= h.level.Level()
|
||||
}
|
||||
|
||||
// Handle implements Handler.Handle.
|
||||
func (h *LevelHandler) Handle(ctx context.Context, r slog.Record) error {
|
||||
func (h *levelHandler) Handle(ctx context.Context, r slog.Record) error {
|
||||
return h.handler.Handle(ctx, r)
|
||||
}
|
||||
|
||||
// WithAttrs implements Handler.WithAttrs.
|
||||
func (h *LevelHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
||||
return NewLevelHandler(h.level, h.handler.WithAttrs(attrs))
|
||||
func (h *levelHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
||||
return newLevelHandler(h.level, h.handler.WithAttrs(attrs))
|
||||
}
|
||||
|
||||
// WithGroup implements Handler.WithGroup.
|
||||
func (h *LevelHandler) WithGroup(name string) slog.Handler {
|
||||
return NewLevelHandler(h.level, h.handler.WithGroup(name))
|
||||
func (h *levelHandler) WithGroup(name string) slog.Handler {
|
||||
return newLevelHandler(h.level, h.handler.WithGroup(name))
|
||||
}
|
||||
|
||||
// Handler returns the Handler wrapped by h.
|
||||
func (h *LevelHandler) Handler() slog.Handler {
|
||||
func (h *levelHandler) Handler() slog.Handler {
|
||||
return h.handler
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ import (
|
||||
|
||||
// GRPCLogger returns a logger at warn level for gRPC logging.
|
||||
func GRPCLogger(l *slog.Logger) *slog.Logger {
|
||||
return slog.New(NewLevelHandler(slog.LevelWarn, l.Handler())).WithGroup("gRPC")
|
||||
return slog.New(newLevelHandler(slog.LevelWarn, l.Handler())).WithGroup("gRPC")
|
||||
}
|
||||
|
||||
// ReplaceGRPCLogger replaces grpc's internal logger with the given logger.
|
||||
|
Loading…
x
Reference in New Issue
Block a user