github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/mysql_logger_driver/driver.go (about)

     1  package mysql_logger_driver
     2  
     3  import (
     4  	"database/sql"
     5  	"database/sql/driver"
     6  	"strings"
     7  
     8  	"github.com/fatih/color"
     9  	"github.com/go-sql-driver/mysql"
    10  	"github.com/sirupsen/logrus"
    11  )
    12  
    13  type LoggingDriver struct {
    14  	Driver string
    15  }
    16  
    17  func (d LoggingDriver) Open(dsn string) (driver.Conn, error) {
    18  	mysqlDriver := &mysql.MySQLDriver{}
    19  	cfg, err := mysql.ParseDSN(dsn)
    20  	if err != nil {
    21  		panic(err)
    22  	}
    23  	cfg.Passwd = strings.Repeat("*", len(cfg.Passwd))
    24  
    25  	conn, err := mysqlDriver.Open(dsn)
    26  	if err != nil {
    27  		logrus.Errorf("failed to open connection: %s %s", cfg.FormatDSN(), err)
    28  		return nil, err
    29  	}
    30  	logrus.Debugf(color.YellowString("connected %s", cfg.FormatDSN()))
    31  
    32  	return &loggerConn{cfg: cfg, conn: conn}, nil
    33  }
    34  
    35  func init() {
    36  	sql.Register("logger:mysql", &LoggingDriver{"mysql"})
    37  }