feat: always inject labeler

This commit is contained in:
franklin 2023-07-10 09:45:00 +02:00
parent 95e880216d
commit fd37e0deee
3 changed files with 14 additions and 61 deletions

View File

@ -37,8 +37,12 @@ func Telemetry() middleware.Middleware {
return func(l *zap.Logger, name string, next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
*r = *gotsrpc.RequestWithStatsContext(r)
ctx, labeler := middleware.LoggerLabelerFromContext(r.Context())
next.ServeHTTP(w, r.WithContext(ctx))
// retrieve or inject labeler
r, labeler := middleware.LoggerLabelerFromRequest(r)
next.ServeHTTP(w, r)
if stats, ok := gotsrpc.GetStatsForRequest(r); ok {
labeler.Add(
zap.String(defaultGOTSRPCFunctionLabel, stats.Func),

View File

@ -15,10 +15,9 @@ const loggerLabelerContextKey log.LabelerContextKey = "github.com/foomo/keel/net
type (
LoggerOptions struct {
Message string
MinWarnCode int
MinErrorCode int
InjectLabeler bool
Message string
MinWarnCode int
MinErrorCode int
}
LoggerOption func(*LoggerOptions)
)
@ -26,10 +25,9 @@ type (
// GetDefaultLoggerOptions returns the default options
func GetDefaultLoggerOptions() LoggerOptions {
return LoggerOptions{
Message: "handled http request",
MinWarnCode: 400,
MinErrorCode: 500,
InjectLabeler: false,
Message: "handled http request",
MinWarnCode: 400,
MinErrorCode: 500,
}
}
@ -65,13 +63,6 @@ func LoggerWithMinErrorCode(v int) LoggerOption {
}
}
// LoggerWithInjectLabeler middleware option
func LoggerWithInjectLabeler(v bool) LoggerOption {
return func(o *LoggerOptions) {
o.InjectLabeler = v
}
}
// LoggerWithOptions middleware
func LoggerWithOptions(opts LoggerOptions) Middleware {
return func(l *zap.Logger, name string, next http.Handler) http.Handler {
@ -83,11 +74,8 @@ func LoggerWithOptions(opts LoggerOptions) Middleware {
l := log.WithHTTPRequest(l, r)
var labeler *log.Labeler
if opts.InjectLabeler {
r, labeler = LoggerLabelerFromRequest(r)
}
// retrieve or inject labeler
r, labeler := LoggerLabelerFromRequest(r)
next.ServeHTTP(wr, r)

View File

@ -7,7 +7,6 @@ import (
"github.com/foomo/keel/log"
"github.com/foomo/keel/net/http/middleware"
keeltest "github.com/foomo/keel/test"
"go.uber.org/zap"
)
func ExampleLogger() {
@ -38,41 +37,3 @@ func ExampleLogger() {
// Output: ok
}
func ExampleLoggerWithInjectLabeler() {
svr := keeltest.NewServer()
// get logger
l := svr.Logger()
// create demo service
svs := http.NewServeMux()
svs.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("ok"))
fmt.Println("ok")
})
svr.AddService(
keeltest.NewServiceHTTP(l, "demo", svs,
func(l *zap.Logger, s string, next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
r, labeler := middleware.LoggerLabelerFromRequest(r)
labeler.Add(zap.String("injected", "message"))
next.ServeHTTP(w, r)
})
},
middleware.Logger(
middleware.LoggerWithInjectLabeler(true),
),
),
)
svr.Start()
resp, err := http.Get(svr.GetService("demo").URL() + "/") //nolint:noctx
log.Must(l, err)
defer resp.Body.Close()
// Output: ok
}