Vibhu Pandey 2a939e813d
feat(sqlstorehook): add sqlstore logging hook (#7137)
### Summary

add sqlstore logging hook
2025-02-17 21:13:40 +05:30

44 lines
1.1 KiB
Go

package sqlstorehook
import (
"context"
"log/slog"
"time"
"github.com/uptrace/bun"
"go.signoz.io/signoz/pkg/factory"
"go.signoz.io/signoz/pkg/sqlstore"
)
type logging struct {
bun.QueryHook
logger *slog.Logger
level slog.Level
}
func NewLoggingFactory() factory.ProviderFactory[sqlstore.SQLStoreHook, sqlstore.Config] {
return factory.NewProviderFactory(factory.MustNewName("logging"), NewLogging)
}
func NewLogging(ctx context.Context, providerSettings factory.ProviderSettings, config sqlstore.Config) (sqlstore.SQLStoreHook, error) {
return &logging{
logger: factory.NewScopedProviderSettings(providerSettings, "go.signoz.io/signoz/pkg/sqlstore/sqlstorehook").Logger(),
level: slog.LevelDebug,
}, nil
}
func (logging) BeforeQuery(ctx context.Context, event *bun.QueryEvent) context.Context {
return ctx
}
func (hook logging) AfterQuery(ctx context.Context, event *bun.QueryEvent) {
hook.logger.Log(
ctx,
hook.level,
"::SQLSTORE-QUERY::",
"db.query.operation", event.Operation(),
"db.query.text", event.Query,
"db.duration", time.Since(event.StartTime).String(),
)
}