feat: add logging
This commit is contained in:
50
internal/pkg/logging/pgxlogrus/pgxlogrus.go
Normal file
50
internal/pkg/logging/pgxlogrus/pgxlogrus.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package pgxlogrus
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/jackc/pgx/v4"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type pgxLogger struct {
|
||||
logger logrus.FieldLogger
|
||||
}
|
||||
|
||||
func New(logger logrus.FieldLogger) *pgxLogger {
|
||||
return &pgxLogger{
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (lg pgxLogger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]interface{}) {
|
||||
lg.logger.WithFields(lg.fieldsData(data)).Info(msg)
|
||||
}
|
||||
|
||||
func (lg pgxLogger) fieldsData(data map[string]interface{}) logrus.Fields {
|
||||
fields := make(logrus.Fields)
|
||||
if v, ok := data["time"]; ok && v != nil {
|
||||
fields["cost"] = v
|
||||
fields["costString"] = fmt.Sprintf("%v", time.Duration(v.(time.Duration)))
|
||||
}
|
||||
|
||||
if v, ok := data["sql"]; ok {
|
||||
fields["SQL"] = v
|
||||
}
|
||||
|
||||
if v, ok := data["pid"]; ok {
|
||||
fields["PID"] = v
|
||||
}
|
||||
|
||||
if v, ok := data["args"]; ok {
|
||||
fields["args"] = v
|
||||
}
|
||||
|
||||
if v, ok := data["rowCount"]; ok {
|
||||
fields["rowCount"] = v
|
||||
}
|
||||
|
||||
return fields
|
||||
}
|
Reference in New Issue
Block a user