Skip to content

Commit ed865db

Browse files
authored
Add skip_healthchecks logging example (#742)
Closes #741
1 parent bea7c0e commit ed865db

File tree

3 files changed

+85
-26
lines changed

3 files changed

+85
-26
lines changed

interceptors/logging/examples/go.mod

+6-7
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,21 @@ require (
99
github.com/rs/zerolog v1.29.0
1010
github.com/sirupsen/logrus v1.9.0
1111
go.uber.org/zap v1.24.0
12-
google.golang.org/grpc v1.61.1
12+
google.golang.org/grpc v1.67.1
1313
k8s.io/klog/v2 v2.90.1
1414
)
1515

1616
require (
1717
github.com/go-logfmt/logfmt v0.5.1 // indirect
18-
github.com/golang/protobuf v1.5.3 // indirect
1918
github.com/mattn/go-colorable v0.1.12 // indirect
2019
github.com/mattn/go-isatty v0.0.14 // indirect
2120
go.uber.org/atomic v1.7.0 // indirect
2221
go.uber.org/multierr v1.6.0 // indirect
23-
golang.org/x/net v0.21.0 // indirect
24-
golang.org/x/sys v0.17.0 // indirect
25-
golang.org/x/text v0.14.0 // indirect
26-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 // indirect
27-
google.golang.org/protobuf v1.32.0 // indirect
22+
golang.org/x/net v0.28.0 // indirect
23+
golang.org/x/sys v0.24.0 // indirect
24+
golang.org/x/text v0.17.0 // indirect
25+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
26+
google.golang.org/protobuf v1.34.2 // indirect
2827
)
2928

3029
replace github.com/grpc-ecosystem/go-grpc-middleware/v2 => ../../../

interceptors/logging/examples/go.sum

+12-19
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV
1212
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
1313
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
1414
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
15-
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
16-
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
17-
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
18-
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
1915
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
2016
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
2117
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
@@ -44,24 +40,21 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
4440
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
4541
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
4642
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
47-
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
48-
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
43+
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
44+
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
4945
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
5046
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
5147
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
52-
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
53-
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
54-
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
55-
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
56-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
57-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 h1:hZB7eLIaYlW9qXRfCq/qDaPdbeY3757uARz5Vvfv+cY=
58-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk=
59-
google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY=
60-
google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
61-
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
62-
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
63-
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
64-
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
48+
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
49+
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
50+
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
51+
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
52+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
53+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
54+
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
55+
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
56+
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
57+
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
6558
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
6659
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
6760
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Copyright (c) The go-grpc-middleware Authors.
2+
// Licensed under the Apache License 2.0.
3+
4+
package slog_test
5+
6+
import (
7+
"context"
8+
"fmt"
9+
10+
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors"
11+
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
12+
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/selector"
13+
"google.golang.org/grpc"
14+
)
15+
16+
func InterceptorLogger() logging.Logger {
17+
return logging.LoggerFunc(func(ctx context.Context, lvl logging.Level, msg string, fields ...any) {
18+
fmt.Printf("This will not print anything for health checks or reflection, but will print this message for other requests")
19+
})
20+
}
21+
22+
func SkipHealthAndReflectionRequests(_ context.Context, c interceptors.CallMeta) bool {
23+
return c.FullMethod() != "/grpc.health.v1.Health/Check" &&
24+
c.FullMethod() != "/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo"
25+
}
26+
27+
func ExampleInterceptorLogger() {
28+
29+
opts := []logging.Option{
30+
logging.WithLogOnEvents(logging.StartCall, logging.FinishCall),
31+
}
32+
33+
// Create a server and wrap the logging interceptor with the selector interceptor to skip health checks and reflection requests.
34+
_ = grpc.NewServer(
35+
grpc.ChainUnaryInterceptor(
36+
// Wrap the logging interceptor with the selector interceptor to skip health checks and reflection requests.
37+
selector.UnaryServerInterceptor(
38+
logging.UnaryServerInterceptor(InterceptorLogger(), opts...),
39+
selector.MatchFunc(SkipHealthAndReflectionRequests),
40+
),
41+
),
42+
grpc.ChainStreamInterceptor(
43+
selector.StreamServerInterceptor(
44+
logging.StreamServerInterceptor(InterceptorLogger(), opts...),
45+
selector.MatchFunc(SkipHealthAndReflectionRequests),
46+
),
47+
),
48+
)
49+
50+
// Similarly you can create client and wrap the logging interceptor with the selector interceptor to skip health checks and reflection requests.
51+
_, _ = grpc.Dial(
52+
"some-target",
53+
grpc.WithChainUnaryInterceptor(
54+
selector.UnaryClientInterceptor(
55+
logging.UnaryClientInterceptor(InterceptorLogger(), opts...),
56+
selector.MatchFunc(SkipHealthAndReflectionRequests),
57+
),
58+
),
59+
grpc.WithChainStreamInterceptor(
60+
selector.StreamClientInterceptor(
61+
logging.StreamClientInterceptor(InterceptorLogger(), opts...),
62+
selector.MatchFunc(SkipHealthAndReflectionRequests),
63+
),
64+
),
65+
)
66+
// Output:
67+
}

0 commit comments

Comments
 (0)