Skip to content

Feature Proposal: Enhanced Logging for Migrations #266

Description

@eklatzer

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

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