chore: update server logger

prod
Steven 7 months ago
parent d866268a7a
commit 02fb415260

@ -152,7 +152,6 @@ func initConfig() {
println("port:", serverProfile.Port)
println("mode:", serverProfile.Mode)
println("version:", serverProfile.Version)
println("metric:", serverProfile.Metric)
println("---")
}

@ -0,0 +1,48 @@
package v1
import (
"context"
"log/slog"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
type LoggerInterceptor struct {
}
func NewLoggerInterceptor() *LoggerInterceptor {
return &LoggerInterceptor{}
}
func (in *LoggerInterceptor) LoggerInterceptor(ctx context.Context, request any, serverInfo *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error) {
resp, err := handler(ctx, request)
in.loggerInterceptorDo(ctx, serverInfo.FullMethod, err)
return resp, err
}
func (*LoggerInterceptor) loggerInterceptorDo(ctx context.Context, fullMethod string, err error) {
st := status.Convert(err)
var logLevel slog.Level
var logMsg string
switch st.Code() {
case codes.OK:
logLevel = slog.LevelInfo
logMsg = "OK"
case codes.Unauthenticated, codes.OutOfRange, codes.PermissionDenied, codes.NotFound:
logLevel = slog.LevelInfo
logMsg = "client error"
case codes.Internal, codes.Unknown, codes.DataLoss, codes.Unavailable, codes.DeadlineExceeded:
logLevel = slog.LevelError
logMsg = "server error"
default:
logLevel = slog.LevelError
logMsg = "unknown error"
}
logAttrs := []slog.Attr{slog.String("method", fullMethod)}
if err != nil {
logAttrs = append(logAttrs, slog.String("error", err.Error()))
}
slog.LogAttrs(ctx, logLevel, logMsg, logAttrs...)
}

@ -40,6 +40,7 @@ func NewAPIV2Service(secret string, profile *profile.Profile, store *store.Store
authProvider := NewGRPCAuthInterceptor(store, secret)
grpcServer := grpc.NewServer(
grpc.ChainUnaryInterceptor(
NewLoggerInterceptor().LoggerInterceptor,
authProvider.AuthenticationInterceptor,
),
)

@ -10,7 +10,6 @@ import (
"github.com/google/uuid"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/pkg/errors"
"go.uber.org/zap"
@ -34,7 +33,7 @@ type Server struct {
licenseService *license.LicenseService
// API services.
apiV2Service *apiv1.APIV2Service
apiV1Service *apiv1.APIV2Service
}
func NewServer(ctx context.Context, profile *profile.Profile, store *store.Store) (*Server, error) {
@ -52,12 +51,6 @@ func NewServer(ctx context.Context, profile *profile.Profile, store *store.Store
licenseService: licenseService,
}
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Format: `{"time":"${time_rfc3339}",` +
`"method":"${method}","uri":"${uri}",` +
`"status":${status},"error":"${error}"}` + "\n",
}))
// Serve frontend.
frontendService := NewFrontendService(profile, store)
frontendService.Serve(ctx, e)
@ -79,9 +72,9 @@ func NewServer(ctx context.Context, profile *profile.Profile, store *store.Store
})
rootGroup := e.Group("")
s.apiV2Service = apiv1.NewAPIV2Service(secret, profile, store, licenseService, s.Profile.Port+1)
s.apiV1Service = apiv1.NewAPIV2Service(secret, profile, store, licenseService, s.Profile.Port+1)
// Register gRPC gateway as api v1.
if err := s.apiV2Service.RegisterGateway(ctx, e); err != nil {
if err := s.apiV1Service.RegisterGateway(ctx, e); err != nil {
return nil, errors.Wrap(err, "failed to register gRPC gateway")
}
@ -103,7 +96,7 @@ func (s *Server) Start(ctx context.Context) error {
return err
}
go func() {
if err := s.apiV2Service.GetGRPCServer().Serve(listen); err != nil {
if err := s.apiV1Service.GetGRPCServer().Serve(listen); err != nil {
slog.Log(ctx, slog.LevelError, "failed to start grpc server")
}
}()

Loading…
Cancel
Save