Skip to content

Commit e40d5cf

Browse files
committed
Added gRPC debug filter
1 parent fc59a56 commit e40d5cf

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

cli/daemon/daemon.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,13 @@ func NewCommand() *cobra.Command {
5757
configuration.Settings.BindPFlag("daemon.port", cmd.PersistentFlags().Lookup("port"))
5858
cmd.Flags().BoolVar(&daemonize, "daemonize", false, tr("Do not terminate daemon process if the parent process dies"))
5959
cmd.Flags().BoolVar(&debug, "debug", false, tr("Enable debug logging of gRPC calls"))
60+
cmd.Flags().StringSliceVar(&debugFilters, "debug-filter", []string{}, tr("Display only the provided gRPC calls"))
6061
return cmd
6162
}
6263

6364
var daemonize bool
6465
var debug bool
66+
var debugFilters []string
6567

6668
func runDaemonCommand(cmd *cobra.Command, args []string) {
6769

cli/daemon/interceptors.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"context"
2020
"encoding/json"
2121
"fmt"
22+
"strings"
2223

2324
"google.golang.org/grpc"
2425
)
@@ -35,7 +36,22 @@ func logError(err error) {
3536
}
3637
}
3738

39+
func logSelector(method string) bool {
40+
if len(debugFilters) == 0 {
41+
return true
42+
}
43+
for _, filter := range debugFilters {
44+
if strings.Contains(method, filter) {
45+
return true
46+
}
47+
}
48+
return false
49+
}
50+
3851
func unaryLoggerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
52+
if !logSelector(info.FullMethod) {
53+
return handler(ctx, req)
54+
}
3955
fmt.Println("CALLED:", info.FullMethod)
4056
log(true, req)
4157
resp, err := handler(ctx, req)
@@ -46,6 +62,9 @@ func unaryLoggerInterceptor(ctx context.Context, req interface{}, info *grpc.Una
4662
}
4763

4864
func streamLoggerInterceptor(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
65+
if !logSelector(info.FullMethod) {
66+
return handler(srv, stream)
67+
}
4968
streamReq := ""
5069
if info.IsClientStream {
5170
streamReq = "STREAM_REQ "

0 commit comments

Comments
 (0)