summaryrefslogtreecommitdiff
path: root/pkg/pls/log.go
blob: 14eb7db0359a43fbb8a2ee3b041d92d7001b3683 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package pls

import (
	"context"

	"github.com/rs/zerolog"
	"github.com/xlgmokha/x/pkg/log"
	"google.golang.org/grpc"
)

func LogError(ctx context.Context, err error) {
	if err != nil {
		log.WithFields(ctx, log.Fields{"error": err})
	}
}

func LogErrorNow(ctx context.Context, err error) {
	defer FlushLog(ctx)

	LogError(ctx, err)
}

func LogGRPC(logger *zerolog.Logger) grpc.UnaryServerInterceptor {
	return func(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) {
		ctx = logger.WithContext(ctx)

		defer FlushLog(ctx)
		return handler(ctx, req)
	}
}

func LogGRPCStream(logger *zerolog.Logger) grpc.StreamServerInterceptor {
	return func(srv any, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
		ctx := logger.WithContext(ss.Context())
		log.WithFields(ctx, log.Fields{"info": info})

		defer FlushLog(ctx)
		return handler(srv, ss)
	}
}

func FlushLog(ctx context.Context) {
	zerolog.Ctx(ctx).Print()
}

func LogNow(ctx context.Context, fields log.Fields) {
	defer FlushLog(ctx)

	log.WithFields(ctx, fields)
}