You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-11-27 22:49:15 +02:00
@@ -4,8 +4,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"go.opentelemetry.io/contrib/bridges/otelslog"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
)
|
||||
|
||||
@@ -27,3 +34,27 @@ func init() {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func rolldice(w http.ResponseWriter, r *http.Request) {
|
||||
ctx, span := tracer.Start(r.Context(), "roll")
|
||||
defer span.End()
|
||||
|
||||
roll := 1 + rand.Intn(6)
|
||||
|
||||
var msg string
|
||||
if player := r.PathValue("player"); player != "" {
|
||||
msg = fmt.Sprintf("%s is rolling the dice", player)
|
||||
} else {
|
||||
msg = "Anonymous player is rolling the dice"
|
||||
}
|
||||
logger.InfoContext(ctx, msg, "result", roll)
|
||||
|
||||
rollValueAttr := attribute.Int("roll.value", roll)
|
||||
span.SetAttributes(rollValueAttr)
|
||||
rollCnt.Add(ctx, 1, metric.WithAttributes(rollValueAttr))
|
||||
|
||||
resp := strconv.Itoa(roll) + "\n"
|
||||
if _, err := io.WriteString(w, resp); err != nil {
|
||||
logger.ErrorContext(ctx, "Write failed", "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user