Skip to content

Commit 21cbf43

Browse files
Revert "Enrich logs with traces for product catalog - flat JSON. (#48)"
This reverts commit b51038a.
1 parent 11b7f6b commit 21cbf43

File tree

1 file changed

+47
-11
lines changed

1 file changed

+47
-11
lines changed

src/product-catalog/main.go

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
// Copyright The OpenTelemetry Authors
32
// SPDX-License-Identifier: Apache-2.0
43
package main
@@ -15,12 +14,19 @@ import (
1514
"syscall"
1615
"time"
1716

17+
"go.opentelemetry.io/contrib/bridges/otelslog"
1818
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
1919
"go.opentelemetry.io/contrib/instrumentation/runtime"
2020
"go.opentelemetry.io/otel"
2121
"go.opentelemetry.io/otel/attribute"
2222
otelcodes "go.opentelemetry.io/otel/codes"
23+
"go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc"
24+
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
25+
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
26+
"go.opentelemetry.io/otel/exporters/stdout/stdoutlog"
27+
"go.opentelemetry.io/otel/log/global"
2328
"go.opentelemetry.io/otel/propagation"
29+
sdklog "go.opentelemetry.io/otel/sdk/log"
2430
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
2531
sdkresource "go.opentelemetry.io/otel/sdk/resource"
2632
sdktrace "go.opentelemetry.io/otel/sdk/trace"
@@ -56,12 +62,8 @@ const (
5662
CTX_QUERY_TIMEOUT = 10 * time.Second
5763
)
5864

59-
// Initialize slog with JSON handler for raw logs
6065
func init() {
61-
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
62-
Level: slog.LevelInfo,
63-
})
64-
logger = slog.New(handler)
66+
logger = otelslog.NewLogger("product-catalog")
6567
}
6668

6769
func initResource() *sdkresource.Resource {
@@ -83,11 +85,12 @@ func initResource() *sdkresource.Resource {
8385

8486
func initTracerProvider() *sdktrace.TracerProvider {
8587
ctx := context.Background()
86-
exporter, err := sdktrace.NewSimpleSpanProcessor(nil) // placeholder if OTLP exporter removed
88+
exporter, err := otlptracegrpc.New(ctx)
8789
if err != nil {
88-
logger.Error("Failed to initialize tracer exporter")
90+
logger.Error(fmt.Sprintf("OTLP Trace gRPC Creation: %v", err))
8991
}
9092
tp := sdktrace.NewTracerProvider(
93+
sdktrace.WithBatcher(exporter),
9194
sdktrace.WithResource(initResource()),
9295
)
9396
otel.SetTracerProvider(tp)
@@ -96,13 +99,37 @@ func initTracerProvider() *sdktrace.TracerProvider {
9699
}
97100

98101
func initMeterProvider() *sdkmetric.MeterProvider {
102+
ctx := context.Background()
103+
exporter, err := otlpmetricgrpc.New(ctx)
104+
if err != nil {
105+
logger.Error(fmt.Sprintf("new otlp metric grpc exporter failed: %v", err))
106+
}
99107
mp := sdkmetric.NewMeterProvider(
108+
sdkmetric.WithReader(sdkmetric.NewPeriodicReader(exporter)),
100109
sdkmetric.WithResource(initResource()),
101110
)
102111
otel.SetMeterProvider(mp)
103112
return mp
104113
}
105114

115+
func initLoggerProvider() *sdklog.LoggerProvider {
116+
ctx := context.Background()
117+
logExporter, err := otlploggrpc.New(ctx)
118+
if err != nil {
119+
return nil
120+
}
121+
consoleExporter, err := stdoutlog.New()
122+
if err != nil {
123+
return nil
124+
}
125+
loggerProvider := sdklog.NewLoggerProvider(
126+
sdklog.WithProcessor(sdklog.NewBatchProcessor(logExporter)),
127+
sdklog.WithProcessor(sdklog.NewSimpleProcessor(consoleExporter)),
128+
)
129+
global.SetLoggerProvider(loggerProvider)
130+
return loggerProvider
131+
}
132+
106133
func initPostgresConnectionPool() *pgxpool.Pool {
107134
var connStr string
108135
mustMapEnv(&connStr, "PRODUCT_CATALOG_DB_CONNECTION")
@@ -124,26 +151,35 @@ func initPostgresConnectionPool() *pgxpool.Pool {
124151
return pool
125152
}
126153

127-
// Helper function to enrich logs with trace/span IDs as top-level fields
128154
func logWithTrace(ctx context.Context, level slog.Level, msg string, attrs ...slog.Attr) {
129155
span := trace.SpanFromContext(ctx)
130156
sc := span.SpanContext()
157+
158+
// Add trace_id and span_id as top-level attributes
131159
attrs = append(attrs,
132160
slog.String("trace_id", sc.TraceID().String()),
133161
slog.String("span_id", sc.SpanID().String()),
134162
)
163+
135164
logger.LogAttrs(ctx, level, msg, attrs...)
136165
}
137166

167+
138168
func main() {
169+
lp := initLoggerProvider()
170+
defer func() {
171+
if err := lp.Shutdown(context.Background()); err != nil {
172+
logger.Error(fmt.Sprintf("Logger Provider Shutdown: %v", err))
173+
}
174+
logger.Info("Shutdown logger provider")
175+
}()
139176
tp := initTracerProvider()
140177
defer func() {
141178
if err := tp.Shutdown(context.Background()); err != nil {
142179
logger.Error(fmt.Sprintf("Tracer Provider Shutdown: %v", err))
143180
}
144181
logger.Info("Shutdown tracer provider")
145182
}()
146-
147183
mp := initMeterProvider()
148184
defer func() {
149185
if err := mp.Shutdown(context.Background()); err != nil {
@@ -331,4 +367,4 @@ func createClient(ctx context.Context, svcAddr string) (*grpc.ClientConn, error)
331367
grpc.WithTransportCredentials(insecure.NewCredentials()),
332368
grpc.WithStatsHandler(otelgrpc.NewClientHandler()),
333369
)
334-
}
370+
}

0 commit comments

Comments
 (0)