logging for showcase

This commit is contained in:
adlerhurst
2025-03-17 08:18:33 +01:00
parent 258e973503
commit a74be07efe
6 changed files with 36 additions and 21 deletions

View File

@@ -2,6 +2,7 @@ package cached
import ( import (
"context" "context"
"log"
"github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/repository"
"github.com/zitadel/zitadel/backend/storage/cache" "github.com/zitadel/zitadel/backend/storage/cache"
@@ -16,15 +17,18 @@ func NewInstance(c cache.Cache[repository.InstanceIndex, string, *repository.Ins
} }
func (i *Instance) ByID(ctx context.Context, id string) *repository.Instance { func (i *Instance) ByID(ctx context.Context, id string) *repository.Instance {
log.Println("cached.instance.byID")
instance, _ := i.Cache.Get(ctx, repository.InstanceByID, id) instance, _ := i.Cache.Get(ctx, repository.InstanceByID, id)
return instance return instance
} }
func (i *Instance) ByDomain(ctx context.Context, domain string) *repository.Instance { func (i *Instance) ByDomain(ctx context.Context, domain string) *repository.Instance {
log.Println("cached.instance.byDomain")
instance, _ := i.Cache.Get(ctx, repository.InstanceByDomain, domain) instance, _ := i.Cache.Get(ctx, repository.InstanceByDomain, domain)
return instance return instance
} }
func (i *Instance) Set(ctx context.Context, instance *repository.Instance) { func (i *Instance) Set(ctx context.Context, instance *repository.Instance) {
log.Println("cached.instance.set")
i.Cache.Set(ctx, instance) i.Cache.Set(ctx, instance)
} }

View File

@@ -2,6 +2,7 @@ package cached
import ( import (
"context" "context"
"log"
"github.com/zitadel/zitadel/backend/repository" "github.com/zitadel/zitadel/backend/repository"
"github.com/zitadel/zitadel/backend/storage/cache" "github.com/zitadel/zitadel/backend/storage/cache"
@@ -16,10 +17,12 @@ func NewUser(c cache.Cache[repository.UserIndex, string, *repository.User]) *Use
} }
func (i *User) ByID(ctx context.Context, id string) *repository.User { func (i *User) ByID(ctx context.Context, id string) *repository.User {
log.Println("cached.user.byid")
user, _ := i.Cache.Get(ctx, repository.UserByIDIndex, id) user, _ := i.Cache.Get(ctx, repository.UserByIDIndex, id)
return user return user
} }
func (i *User) Set(ctx context.Context, user *repository.User) { func (i *User) Set(ctx context.Context, user *repository.User) {
log.Println("cached.user.set")
i.Cache.Set(ctx, user) i.Cache.Set(ctx, user)
} }

View File

@@ -65,31 +65,36 @@ func (i *instance) Create(ctx context.Context, tx database.Transaction, instance
} }
func (i *instance) ByID(ctx context.Context, querier database.Querier, id string) (*repository.Instance, error) { func (i *instance) ByID(ctx context.Context, querier database.Querier, id string) (*repository.Instance, error) {
return handler.SkipNext( return traced.Wrap(i.tracer, "instance.byID",
handler.SkipNilHandler(i.cache, handler.SkipNext(
handler.ResFuncToHandle(i.cache.ByID), handler.SkipNilHandler(i.cache,
), handler.ResFuncToHandle(i.cache.ByID),
handler.Chain( ),
handler.Decorate( handler.Chain(
sql.Query(querier).InstanceByID, handler.Decorates(
traced.Decorate[string, *repository.Instance](i.tracer, tracing.WithSpanName("instance.sql.ByID")), sql.Query(querier).InstanceByID,
traced.Decorate[string, *repository.Instance](i.tracer, tracing.WithSpanName("instance.sql.ByID")),
logged.Decorate[string, *repository.Instance](i.logger, "instance.sql.ByID"),
),
handler.SkipNilHandler(i.cache, handler.NoReturnToHandle(i.cache.Set)),
), ),
handler.SkipNilHandler(i.cache, handler.NoReturnToHandle(i.cache.Set)),
), ),
)(ctx, id) )(ctx, id)
} }
func (i *instance) ByDomain(ctx context.Context, querier database.Querier, domain string) (*repository.Instance, error) { func (i *instance) ByDomain(ctx context.Context, querier database.Querier, domain string) (*repository.Instance, error) {
return handler.SkipNext( return traced.Wrap(i.tracer, "instance.byDomain",
handler.SkipNilHandler(i.cache, handler.SkipNext(
handler.ResFuncToHandle(i.cache.ByDomain), handler.SkipNilHandler(i.cache,
), handler.ResFuncToHandle(i.cache.ByDomain),
handler.Chain( ),
handler.Decorate( handler.Chain(
sql.Query(querier).InstanceByDomain, handler.Decorate(
traced.Decorate[string, *repository.Instance](i.tracer, tracing.WithSpanName("instance.sql.ByDomain")), sql.Query(querier).InstanceByDomain,
traced.Decorate[string, *repository.Instance](i.tracer, tracing.WithSpanName("instance.sql.ByDomain")),
),
handler.SkipNilHandler(i.cache, handler.NoReturnToHandle(i.cache.Set)),
), ),
handler.SkipNilHandler(i.cache, handler.NoReturnToHandle(i.cache.Set)),
), ),
)(ctx, domain) )(ctx, domain)
} }

View File

@@ -2,6 +2,7 @@ package orchestrate_test
import ( import (
"context" "context"
"fmt"
"log/slog" "log/slog"
"os" "os"
"reflect" "reflect"
@@ -112,6 +113,7 @@ func Test_instance_Create(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
fmt.Printf("------------------------ %s ------------------------\n", tt.name)
i := orchestrate.Instance(tt.opts...) i := orchestrate.Instance(tt.opts...)
got, err := i.Create(tt.args.ctx, tt.args.tx, tt.args.instance) got, err := i.Create(tt.args.ctx, tt.args.tx, tt.args.instance)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {
@@ -227,6 +229,7 @@ func Test_instance_ByID(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
fmt.Printf("------------------------ %s ------------------------\n", tt.name)
i := orchestrate.Instance(tt.opts...) i := orchestrate.Instance(tt.opts...)
got, err := i.ByID(tt.args.ctx, tt.args.tx, tt.args.id) got, err := i.ByID(tt.args.ctx, tt.args.tx, tt.args.id)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {

View File

@@ -15,10 +15,10 @@ func Wrap[Req, Res any](logger *logging.Logger, name string, handle handler.Hand
if logger == nil { if logger == nil {
return handle return handle
} }
log.Println("log.wrap", name)
return func(ctx context.Context, r Req) (_ Res, err error) { return func(ctx context.Context, r Req) (_ Res, err error) {
logger.Debug("execute", slog.String("handler", name)) logger.Debug("execute", slog.String("handler", name))
defer logger.Debug("done", slog.String("handler", name)) defer logger.Debug("done", slog.String("handler", name))
log.Println("log.wrap", name)
return handle(ctx, r) return handle(ctx, r)
} }
} }
@@ -32,7 +32,7 @@ func Decorate[Req, Res any](logger *logging.Logger, name string) handler.Decorat
} }
logger = logger.With("handler", name) logger = logger.With("handler", name)
logger.DebugContext(ctx, "execute") logger.DebugContext(ctx, "execute")
log.Println("log.decorate", name) log.Println("logged.decorate", name)
defer func() { defer func() {
if err != nil { if err != nil {
logger.ErrorContext(ctx, "failed", slog.String("cause", err.Error())) logger.ErrorContext(ctx, "failed", slog.String("cause", err.Error()))

View File

@@ -41,7 +41,7 @@ func Decorate[Req, Res any](tracer *tracing.Tracer, opts ...tracing.DecorateOpti
for _, opt := range opts { for _, opt := range opts {
opt(o) opt(o)
} }
log.Println("trace") log.Println("traced.decorate")
ctx, end := o.Start(ctx, tracer) ctx, end := o.Start(ctx, tracer)
defer end(err) defer end(err)