diff --git a/commands/root.go b/commands/root.go index 593d1b47..7df8c4b7 100644 --- a/commands/root.go +++ b/commands/root.go @@ -4,9 +4,11 @@ import ( "os" imagetoolscmd "github.com/docker/buildx/commands/imagetools" + "github.com/docker/buildx/util/logutil" "github.com/docker/cli-docs-tool/annotation" "github.com/docker/cli/cli-plugins/plugin" "github.com/docker/cli/cli/command" + "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -26,6 +28,12 @@ func NewRootCmd(name string, isPlugin bool, dockerCli command.Cli) *cobra.Comman } } + logrus.AddHook(logutil.NewFilter( + "serving grpc connection", + "stopping session", + "using default config store", + )) + addCommands(cmd, dockerCli) return cmd } diff --git a/util/logutil/filter.go b/util/logutil/filter.go new file mode 100644 index 00000000..2e8f91d9 --- /dev/null +++ b/util/logutil/filter.go @@ -0,0 +1,36 @@ +package logutil + +import ( + "io/ioutil" + "strings" + + "github.com/sirupsen/logrus" +) + +func NewFilter(filters ...string) logrus.Hook { + dl := logrus.New() + dl.SetOutput(ioutil.Discard) + return &logsFilter{ + filters: filters, + discardLogger: dl, + } +} + +type logsFilter struct { + filters []string + discardLogger *logrus.Logger +} + +func (d *logsFilter) Levels() []logrus.Level { + return []logrus.Level{logrus.DebugLevel} +} + +func (d *logsFilter) Fire(entry *logrus.Entry) error { + for _, f := range d.filters { + if strings.Contains(entry.Message, f) { + entry.Logger = d.discardLogger + return nil + } + } + return nil +}