Skip to content

Commit c8a33d5

Browse files
committed
Added otel log support in the productcatalog-service
1 parent cbd0c9c commit c8a33d5

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

src/productcatalogservice/go.mod

+3-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ require (
4646
github.com/open-feature/flagd/core v0.7.4 // indirect
4747
github.com/open-feature/schemas v0.2.8 // indirect
4848
github.com/twmb/murmur3 v1.1.8 // indirect
49+
github.com/uptrace/opentelemetry-go-extra/otellogrus v0.2.4 // indirect
50+
github.com/uptrace/opentelemetry-go-extra/otelutil v0.2.4 // indirect
4951
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
5052
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
5153
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
@@ -58,7 +60,7 @@ require (
5860
golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3 // indirect
5961
golang.org/x/mod v0.14.0 // indirect
6062
golang.org/x/net v0.21.0 // indirect
61-
golang.org/x/sys v0.17.0 // indirect
63+
golang.org/x/sys v0.18.0 // indirect
6264
golang.org/x/text v0.14.0 // indirect
6365
google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe // indirect
6466
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect

src/productcatalogservice/go.sum

+6
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,10 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
660660
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
661661
github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg=
662662
github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ=
663+
github.com/uptrace/opentelemetry-go-extra/otellogrus v0.2.4 h1:3Ok5iuhXYDM2cfs9/a5GPsWma58uo8FJhjWndQtmt/A=
664+
github.com/uptrace/opentelemetry-go-extra/otellogrus v0.2.4/go.mod h1:EiUD7/t6Vre9nayvP5IVdOqbLMabf/c4k8H2j1yHhdg=
665+
github.com/uptrace/opentelemetry-go-extra/otelutil v0.2.4 h1:A6+6ZGgLRoUTD+Jkw/Ph0g8HKiHUsiGlbngcSqBaHsw=
666+
github.com/uptrace/opentelemetry-go-extra/otelutil v0.2.4/go.mod h1:gNYQe4RRVyszriFOhuMpwpAu4kdoFlZgcsw6dcIDFWg=
663667
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
664668
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
665669
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
@@ -941,6 +945,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
941945
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
942946
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
943947
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
948+
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
949+
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
944950
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
945951
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
946952
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=

src/productcatalogservice/main.go

+25-14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"time"
2020

2121
"github.com/sirupsen/logrus"
22+
"github.com/uptrace/opentelemetry-go-extra/otellogrus"
2223

2324
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
2425
"go.opentelemetry.io/contrib/instrumentation/runtime"
@@ -55,10 +56,17 @@ var (
5556

5657
func init() {
5758
log = logrus.New()
59+
log.AddHook(otellogrus.NewHook(otellogrus.WithLevels(
60+
logrus.PanicLevel,
61+
logrus.FatalLevel,
62+
logrus.WarnLevel,
63+
logrus.InfoLevel,
64+
logrus.DebugLevel,
65+
)))
5866
var err error
5967
catalog, err = readProductFiles()
6068
if err != nil {
61-
log.Fatalf("Reading Product Files: %v", err)
69+
log.WithContext(context.Background()).Errorf("Reading Product Files: %v", err)
6270
os.Exit(1)
6371
}
6472
}
@@ -85,7 +93,7 @@ func initTracerProvider() *sdktrace.TracerProvider {
8593

8694
exporter, err := otlptracegrpc.New(ctx)
8795
if err != nil {
88-
log.Fatalf("OTLP Trace gRPC Creation: %v", err)
96+
log.WithContext(context.Background()).Errorf("OTLP Trace gRPC Creation: %v", err)
8997
}
9098
tp := sdktrace.NewTracerProvider(
9199
sdktrace.WithBatcher(exporter),
@@ -101,7 +109,7 @@ func initMeterProvider() *sdkmetric.MeterProvider {
101109

102110
exporter, err := otlpmetricgrpc.New(ctx)
103111
if err != nil {
104-
log.Fatalf("new otlp metric grpc exporter failed: %v", err)
112+
log.WithContext(ctx).Errorf("new otlp metric grpc exporter failed: %v", err)
105113
}
106114

107115
mp := sdkmetric.NewMeterProvider(
@@ -115,24 +123,27 @@ func initMeterProvider() *sdkmetric.MeterProvider {
115123
func main() {
116124
tp := initTracerProvider()
117125
defer func() {
118-
if err := tp.Shutdown(context.Background()); err != nil {
119-
log.Fatalf("Tracer Provider Shutdown: %v", err)
126+
ctx := context.Background()
127+
if err := tp.Shutdown(ctx); err != nil {
128+
log.WithContext(ctx).Errorf("Tracer Provider Shutdown: %v", err)
120129
}
121-
log.Println("Shutdown tracer provider")
130+
log.WithContext(ctx).Info("Shutdown tracer provider")
122131
}()
123132

124133
mp := initMeterProvider()
125134
defer func() {
126-
if err := mp.Shutdown(context.Background()); err != nil {
127-
log.Fatalf("Error shutting down meter provider: %v", err)
135+
ctx := context.Background()
136+
if err := mp.Shutdown(ctx); err != nil {
137+
138+
log.WithContext(ctx).Errorf("Error shutting down meter provider: %v", err)
128139
}
129-
log.Println("Shutdown meter provider")
140+
log.WithContext(ctx).Error("Shutdown meter provider")
130141
}()
131142
openfeature.SetProvider(flagd.NewProvider())
132143

133144
err := runtime.Start(runtime.WithMinimumReadMemStatsInterval(time.Second))
134145
if err != nil {
135-
log.Fatal(err)
146+
log.WithContext(context.Background()).WithError(err)
136147
}
137148

138149
svc := &productCatalog{}
@@ -143,7 +154,7 @@ func main() {
143154

144155
ln, err := net.Listen("tcp", fmt.Sprintf(":%s", port))
145156
if err != nil {
146-
log.Fatalf("TCP Listen: %v", err)
157+
log.WithContext(context.Background()).Errorf("TCP Listen: %v", err)
147158
}
148159

149160
srv := grpc.NewServer(
@@ -160,14 +171,14 @@ func main() {
160171

161172
go func() {
162173
if err := srv.Serve(ln); err != nil {
163-
log.Fatalf("Failed to serve gRPC server, err: %v", err)
174+
log.WithContext(context.Background()).Errorf("Failed to serve gRPC server, err: %v", err)
164175
}
165176
}()
166177

167178
<-ctx.Done()
168179

169180
srv.GracefulStop()
170-
log.Println("ProductCatalogService gRPC server stopped")
181+
log.WithContext(context.Background()).Info("ProductCatalogService gRPC server stopped")
171182
}
172183

173184
type productCatalog struct {
@@ -210,7 +221,7 @@ func readProductFiles() ([]*pb.Product, error) {
210221
products = append(products, res.Products...)
211222
}
212223

213-
log.Infof("Loaded %d products", len(products))
224+
log.WithContext(context.Background()).Infof("Loaded %d products", len(products))
214225

215226
return products, nil
216227
}

0 commit comments

Comments
 (0)