From 6e9ce7af225f68e72aff7edb05e9f9186ad125a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=85=E5=AD=90?= Date: Fri, 9 Jul 2021 09:42:07 +0800 Subject: [PATCH] chore(example/blog): add ent tracing, and print the original SQL (#1163) --- examples/blog/internal/data/data.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/examples/blog/internal/data/data.go b/examples/blog/internal/data/data.go index 67254f172..0bbaa829c 100644 --- a/examples/blog/internal/data/data.go +++ b/examples/blog/internal/data/data.go @@ -2,14 +2,20 @@ package data import ( "context" + "fmt" "github.com/go-kratos/kratos/examples/blog/internal/conf" "github.com/go-kratos/kratos/examples/blog/internal/data/ent" + + "entgo.io/ent/dialect" + "entgo.io/ent/dialect/sql" "github.com/go-kratos/kratos/v2/log" "github.com/go-redis/redis/extra/redisotel" "github.com/go-redis/redis/v8" "github.com/google/wire" - + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" // init mysql driver _ "github.com/go-sql-driver/mysql" ) @@ -26,10 +32,24 @@ type Data struct { // NewData . func NewData(conf *conf.Data, logger log.Logger) (*Data, func(), error) { log := log.NewHelper(logger) - client, err := ent.Open( + drv, err := sql.Open( conf.Database.Driver, conf.Database.Source, ) + sqlDrv := dialect.DebugWithContext(drv, func(ctx context.Context, i ...interface{}) { + log.WithContext(ctx).Info(i...) + tracer := otel.Tracer("ent.") + kind := trace.SpanKindServer + _, span := tracer.Start(ctx, + "Query", + trace.WithAttributes( + attribute.String("sql", fmt.Sprint(i...)), + ), + trace.WithSpanKind(kind), + ) + span.End() + }) + client := ent.NewClient(ent.Driver(sqlDrv)) if err != nil { log.Errorf("failed opening connection to sqlite: %v", err) return nil, nil, err