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) }