mirror of
https://github.com/aykhans/slash-e.git
synced 2025-04-16 04:13:12 +00:00
chore: update server logger
This commit is contained in:
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("---")
|
||||
}
|
||||
|
||||
|
48
server/route/api/v1/logger_interceptor.go
Normal file
48
server/route/api/v1/logger_interceptor.go
Normal file
@ -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…
x
Reference in New Issue
Block a user