Skip to content

Feature Proposal: Enhanced Logging for Migrations #266

Open
@eklatzer

Description

Hey, it would be nice to be able to activate additional logging when applying migrations.
Similar requests:

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.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions