mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-07-23 07:20:37 -04:00
rewrote some logger helper functions
rewrote interceptors + middleware logging
This commit is contained in:
parent
3765cb0762
commit
6cc282bc7c
2 changed files with 27 additions and 22 deletions
|
@ -7,25 +7,24 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
package logger
|
package logger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go.uber.org/zap"
|
"log/slog"
|
||||||
"go.uber.org/zap/zapcore"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CmdLineVerbosityDescription explains numeric log levels.
|
// CmdLineVerbosityDescription explains numeric log levels.
|
||||||
const CmdLineVerbosityDescription = "log verbosity in zap logging levels. Use -1 for debug information, 0 for info, 1 for warn, 2 for error"
|
const CmdLineVerbosityDescription = "log verbosity in zap logging levels. Use -1 for debug information, 0 for info, 1 for warn, 2 for error"
|
||||||
|
|
||||||
// VerbosityFromInt converts a verbosity level from an integer to a zapcore.Level.
|
// VerbosityFromInt converts a verbosity level from an integer to a zapcore.Level.
|
||||||
func VerbosityFromInt(verbosity int) zapcore.Level {
|
func VerbosityFromInt(verbosity int) slog.Level {
|
||||||
switch {
|
switch {
|
||||||
case verbosity <= -1:
|
case verbosity <= -1:
|
||||||
return zap.DebugLevel
|
return slog.LevelDebug
|
||||||
case verbosity == 0:
|
case verbosity == 0:
|
||||||
return zap.InfoLevel
|
return slog.LevelInfo
|
||||||
case verbosity == 1:
|
case verbosity == 1:
|
||||||
return zap.WarnLevel
|
return slog.LevelWarn
|
||||||
case verbosity >= 2:
|
case verbosity >= 2:
|
||||||
return zap.ErrorLevel
|
return slog.LevelError
|
||||||
default:
|
default:
|
||||||
return zap.InfoLevel
|
return slog.LevelInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,11 @@ package logger
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
"runtime"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
|
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
@ -157,30 +160,30 @@ func (l *Logger) ReplaceGRPCLogger() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetServerUnaryInterceptor returns a gRPC server option for intercepting unary gRPC logs.
|
// GetServerUnaryInterceptor returns a gRPC server option for intercepting unary gRPC logs.
|
||||||
func (l *Logger) GetServerUnaryInterceptor() grpc.ServerOption {
|
func GetServerUnaryInterceptor(l *slog.Logger) grpc.ServerOption {
|
||||||
return grpc.UnaryInterceptor(
|
return grpc.UnaryInterceptor(
|
||||||
logging.UnaryServerInterceptor(l.middlewareLogger()),
|
logging.UnaryServerInterceptor(middlewareLogger(l)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetServerStreamInterceptor returns a gRPC server option for intercepting streaming gRPC logs.
|
// GetServerStreamInterceptor returns a gRPC server option for intercepting streaming gRPC logs.
|
||||||
func (l *Logger) GetServerStreamInterceptor() grpc.ServerOption {
|
func GetServerStreamInterceptor(l *slog.Logger) grpc.ServerOption {
|
||||||
return grpc.StreamInterceptor(
|
return grpc.StreamInterceptor(
|
||||||
logging.StreamServerInterceptor(l.middlewareLogger()),
|
logging.StreamServerInterceptor(middlewareLogger(l)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetClientUnaryInterceptor returns a gRPC client option for intercepting unary gRPC logs.
|
// GetClientUnaryInterceptor returns a gRPC client option for intercepting unary gRPC logs.
|
||||||
func (l *Logger) GetClientUnaryInterceptor() grpc.DialOption {
|
func GetClientUnaryInterceptor(l *slog.Logger) grpc.DialOption {
|
||||||
return grpc.WithUnaryInterceptor(
|
return grpc.WithUnaryInterceptor(
|
||||||
logging.UnaryClientInterceptor(l.middlewareLogger()),
|
logging.UnaryClientInterceptor(middlewareLogger(l)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetClientStreamInterceptor returns a gRPC client option for intercepting stream gRPC logs.
|
// GetClientStreamInterceptor returns a gRPC client option for intercepting stream gRPC logs.
|
||||||
func (l *Logger) GetClientStreamInterceptor() grpc.DialOption {
|
func GetClientStreamInterceptor(l *slog.Logger) grpc.DialOption {
|
||||||
return grpc.WithStreamInterceptor(
|
return grpc.WithStreamInterceptor(
|
||||||
logging.StreamClientInterceptor(l.middlewareLogger()),
|
logging.StreamClientInterceptor(middlewareLogger(l)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +192,7 @@ func (l *Logger) getZapLogger() *zap.Logger {
|
||||||
return l.logger.Desugar()
|
return l.logger.Desugar()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *Logger) middlewareLogger() logging.Logger {
|
func middlewareLogger(l *slog.Logger) logging.Logger {
|
||||||
return logging.LoggerFunc(func(ctx context.Context, lvl logging.Level, msg string, fields ...any) {
|
return logging.LoggerFunc(func(ctx context.Context, lvl logging.Level, msg string, fields ...any) {
|
||||||
f := make([]zap.Field, 0, len(fields)/2)
|
f := make([]zap.Field, 0, len(fields)/2)
|
||||||
|
|
||||||
|
@ -209,19 +212,22 @@ func (l *Logger) middlewareLogger() logging.Logger {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := l.getZapLogger().WithOptions(zap.AddCallerSkip(1)).With(f...)
|
var pcs [1]uintptr
|
||||||
|
runtime.Callers(2, pcs[:]) // skip [Callers, LoggerFunc]
|
||||||
|
r := slog.Record{}
|
||||||
|
|
||||||
switch lvl {
|
switch lvl {
|
||||||
case logging.LevelDebug:
|
case logging.LevelDebug:
|
||||||
logger.Debug(msg)
|
r = slog.NewRecord(time.Now(), slog.LevelDebug, fmt.Sprintf(msg, fields...), pcs[0])
|
||||||
case logging.LevelInfo:
|
case logging.LevelInfo:
|
||||||
logger.Info(msg)
|
r = slog.NewRecord(time.Now(), slog.LevelInfo, fmt.Sprintf(msg, fields...), pcs[0])
|
||||||
case logging.LevelWarn:
|
case logging.LevelWarn:
|
||||||
logger.Warn(msg)
|
r = slog.NewRecord(time.Now(), slog.LevelWarn, fmt.Sprintf(msg, fields...), pcs[0])
|
||||||
case logging.LevelError:
|
case logging.LevelError:
|
||||||
logger.Error(msg)
|
r = slog.NewRecord(time.Now(), slog.LevelError, fmt.Sprintf(msg, fields...), pcs[0])
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("unknown level %v", lvl))
|
panic(fmt.Sprintf("unknown level %v", lvl))
|
||||||
}
|
}
|
||||||
|
_ = l.Handler().Handle(context.Background(), r)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue