sql-migrate
sql-migrate copied to clipboard
Feature Proposal: Enhanced Logging for Migrations
Hey, it would be nice to be able to activate additional logging when applying migrations. Similar requests:
- https://github.com/rubenv/sql-migrate/pull/40
- https://github.com/rubenv/sql-migrate/issues/3
I know, there is no common logger interface in Go, but what about defining a minimal one to at least get some details, especially when using sql-migrate
as lib. Additionally, this could also be benefiting for the standalone tool, as there could be a new flag (e.g. --verbose
).
Small example of the change: (the Logger
interface definition is subject of discussion and could for example be extended to info
and error
or something similar):
type MigrationSet struct {
Logger Logger
}
var migSet = MigrationSet{}
func SetLogger(l Logger) {
if l != nil {
migSet.Logger = l
}
}
type Logger interface {
Printf(format string, v ...any)
}
func (ms *MigrationSet) printf(format string, v ...any) {
if ms.Logger == nil {
return
}
ms.Logger.Printf(format, v...)
}
func Exec(migrations []string) error {
// execute migrations
for _, migration := range migrations {
// apply migration
// log additional execution info
migSet.printf("Executing migration: %s\n", migration)
}
return nil
}
Please let me know, what you think about this proposal and if we can move on to a PR.