mirror of
https://github.com/go-kratos/kratos.git
synced 2026-05-22 10:15:24 +02:00
chore(example/blog): add ent tracing, and print the original SQL (#1163)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user