MM-41143: Pass a custom logger to morph (#19530)

We create a custom io.Writer to pass to the logger
instance. For now, we keep everything to debug
as all errors are surfaced back to the server via
the API.

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2022-02-11 12:37:41 +05:30
коммит произвёл GitHub
родитель 3f52bd197a
Коммит 01a3ed0d3e
2 изменённых файлов: 17 добавлений и 2 удалений

Просмотреть файл

@@ -8,6 +8,7 @@ import (
"database/sql"
dbsql "database/sql"
"fmt"
"log"
"path/filepath"
"strconv"
"strings"
@@ -27,7 +28,6 @@ import (
_ "github.com/golang-migrate/migrate/v4/source/file"
"github.com/jmoiron/sqlx"
"github.com/lib/pq"
_ "github.com/lib/pq"
"github.com/mattermost/gorp"
"github.com/pkg/errors"
@@ -1012,7 +1012,11 @@ func (ss *SqlStore) migrate(direction migrationDirection) error {
return err
}
engine, err := morph.New(context.Background(), driver, src, morph.WithLock("mm-lock-key"))
opts := []morph.EngineOption{
morph.WithLogger(log.New(&morphWriter{}, "", log.Lshortfile)),
morph.WithLock("mm-lock-key"),
}
engine, err := morph.New(context.Background(), driver, src, opts...)
if err != nil {
return err
}

Просмотреть файл

@@ -147,3 +147,14 @@ func constructArrayArgs(ids []string) (string, []interface{}) {
return "(" + placeholder.String() + ")", values
}
// morphWriter is a target to pass to the logger instance of morph.
// For now, everything is just logged at a debug level. If we need to log
// errors/warnings from the library also, that needs to be seen later.
type morphWriter struct {
}
func (l *morphWriter) Write(in []byte) (int, error) {
mlog.Debug(string(in))
return len(in), nil
}