From 67d978f515d50037c85dacdb79949c11ddd6ae70 Mon Sep 17 00:00:00 2001 From: Frederik Ring Date: Thu, 10 Aug 2023 19:41:03 +0200 Subject: [PATCH] Drop logrus dependency, log using slog package from stdlib (#247) --- cmd/backup/exec.go | 2 +- cmd/backup/lock.go | 8 ++++-- cmd/backup/main.go | 14 ++++++--- cmd/backup/script.go | 67 ++++++++++++++++++++++++++------------------ go.mod | 2 +- 5 files changed, 57 insertions(+), 36 deletions(-) diff --git a/cmd/backup/exec.go b/cmd/backup/exec.go index fa2ee81..110eaec 100644 --- a/cmd/backup/exec.go +++ b/cmd/backup/exec.go @@ -160,7 +160,7 @@ func (s *script) runLabeledCommands(label string) error { userLabelName := fmt.Sprintf("%s.user", label) user := c.Labels[userLabelName] - s.logger.Infof("Running %s command %s for container %s", label, cmd, strings.TrimPrefix(c.Names[0], "/")) + s.logger.Info(fmt.Sprintf("Running %s command %s for container %s", label, cmd, strings.TrimPrefix(c.Names[0], "/"))) stdout, stderr, err := s.exec(c.ID, cmd, user) if s.c.ExecForwardOutput { os.Stderr.Write(stderr) diff --git a/cmd/backup/lock.go b/cmd/backup/lock.go index ccc578d..6bab09a 100644 --- a/cmd/backup/lock.go +++ b/cmd/backup/lock.go @@ -41,9 +41,11 @@ func (s *script) lock(lockfile string) (func() error, error) { } if !s.encounteredLock { - s.logger.Infof( - "Exclusive lock was not available on first attempt. Will retry until it becomes available or the timeout of %s is exceeded.", - s.c.LockTimeout, + s.logger.Info( + fmt.Sprintf( + "Exclusive lock was not available on first attempt. Will retry until it becomes available or the timeout of %s is exceeded.", + s.c.LockTimeout, + ), ) s.encounteredLock = true } diff --git a/cmd/backup/main.go b/cmd/backup/main.go index 1a8fe98..459fef3 100644 --- a/cmd/backup/main.go +++ b/cmd/backup/main.go @@ -4,6 +4,7 @@ package main import ( + "fmt" "os" ) @@ -21,7 +22,9 @@ func main() { if pArg := recover(); pArg != nil { if err, ok := pArg.(error); ok { if hookErr := s.runHooks(err); hookErr != nil { - s.logger.Errorf("An error occurred calling the registered hooks: %s", hookErr) + s.logger.Error( + fmt.Sprintf("An error occurred calling the registered hooks: %s", hookErr), + ) } os.Exit(1) } @@ -29,9 +32,12 @@ func main() { } if err := s.runHooks(nil); err != nil { - s.logger.Errorf( - "Backup procedure ran successfully, but an error ocurred calling the registered hooks: %v", - err, + s.logger.Error( + fmt.Sprintf( + + "Backup procedure ran successfully, but an error ocurred calling the registered hooks: %v", + err, + ), ) os.Exit(1) } diff --git a/cmd/backup/script.go b/cmd/backup/script.go index ba2cb2a..d882380 100644 --- a/cmd/backup/script.go +++ b/cmd/backup/script.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "io/fs" + "log/slog" "os" "path" "path/filepath" @@ -32,7 +33,6 @@ import ( "github.com/kelseyhightower/envconfig" "github.com/leekchan/timeutil" "github.com/otiai10/copy" - "github.com/sirupsen/logrus" "golang.org/x/crypto/openpgp" "golang.org/x/sync/errgroup" ) @@ -42,7 +42,7 @@ import ( type script struct { cli *client.Client storages []storage.Backend - logger *logrus.Logger + logger *slog.Logger sender *router.ServiceRouter template *template.Template hooks []hook @@ -63,13 +63,8 @@ type script struct { func newScript() (*script, error) { stdOut, logBuffer := buffer(os.Stdout) s := &script{ - c: &Config{}, - logger: &logrus.Logger{ - Out: stdOut, - Formatter: new(logrus.TextFormatter), - Hooks: make(logrus.LevelHooks), - Level: logrus.InfoLevel, - }, + c: &Config{}, + logger: slog.New(slog.NewTextHandler(stdOut, nil)), stats: &Stats{ StartTime: time.Now(), LogOutput: logBuffer, @@ -114,12 +109,12 @@ func newScript() (*script, error) { logFunc := func(logType storage.LogLevel, context string, msg string, params ...any) { switch logType { case storage.LogLevelWarning: - s.logger.Warnf("["+context+"] "+msg, params...) + s.logger.Warn(fmt.Sprintf("["+context+"] "+msg, params...)) case storage.LogLevelError: - s.logger.Errorf("["+context+"] "+msg, params...) + s.logger.Error(fmt.Sprintf("["+context+"] "+msg, params...)) case storage.LogLevelInfo: default: - s.logger.Infof("["+context+"] "+msg, params...) + s.logger.Info(fmt.Sprintf("["+context+"] "+msg, params...)) } } @@ -306,11 +301,13 @@ func (s *script) stopContainers() (func() error, error) { return noop, nil } - s.logger.Infof( - "Stopping %d container(s) labeled `%s` out of %d running container(s).", - len(containersToStop), - containerLabel, - len(allContainers), + s.logger.Info( + fmt.Sprintf( + "Stopping %d container(s) labeled `%s` out of %d running container(s).", + len(containersToStop), + containerLabel, + len(allContainers), + ), ) var stoppedContainers []types.Container @@ -382,9 +379,11 @@ func (s *script) stopContainers() (func() error, error) { errors.Join(restartErrors...), ) } - s.logger.Infof( - "Restarted %d container(s) and the matching service(s).", - len(stoppedContainers), + s.logger.Info( + fmt.Sprintf( + "Restarted %d container(s) and the matching service(s).", + len(stoppedContainers), + ), ) return nil }, stopError @@ -408,7 +407,9 @@ func (s *script) createArchive() error { if err := remove(backupSources); err != nil { return fmt.Errorf("createArchive: error removing snapshot: %w", err) } - s.logger.Infof("Removed snapshot `%s`.", backupSources) + s.logger.Info( + fmt.Sprintf("Removed snapshot `%s`.", backupSources), + ) return nil }) if err := copy.Copy(s.c.BackupSources, backupSources, copy.Options{ @@ -417,7 +418,9 @@ func (s *script) createArchive() error { }); err != nil { return fmt.Errorf("createArchive: error creating snapshot: %w", err) } - s.logger.Infof("Created snapshot of `%s` at `%s`.", s.c.BackupSources, backupSources) + s.logger.Info( + fmt.Sprintf("Created snapshot of `%s` at `%s`.", s.c.BackupSources, backupSources), + ) } tarFile := s.file @@ -425,7 +428,9 @@ func (s *script) createArchive() error { if err := remove(tarFile); err != nil { return fmt.Errorf("createArchive: error removing tar file: %w", err) } - s.logger.Infof("Removed tar file `%s`.", tarFile) + s.logger.Info( + fmt.Sprintf("Removed tar file `%s`.", tarFile), + ) return nil }) @@ -453,7 +458,9 @@ func (s *script) createArchive() error { return fmt.Errorf("createArchive: error compressing backup folder: %w", err) } - s.logger.Infof("Created backup of `%s` at `%s`.", backupSources, tarFile) + s.logger.Info( + fmt.Sprintf("Created backup of `%s` at `%s`.", backupSources, tarFile), + ) return nil } @@ -470,7 +477,9 @@ func (s *script) encryptArchive() error { if err := remove(gpgFile); err != nil { return fmt.Errorf("encryptArchive: error removing gpg file: %w", err) } - s.logger.Infof("Removed GPG file `%s`.", gpgFile) + s.logger.Info( + fmt.Sprintf("Removed GPG file `%s`.", gpgFile), + ) return nil }) @@ -500,7 +509,9 @@ func (s *script) encryptArchive() error { } s.file = gpgFile - s.logger.Infof("Encrypted backup using given passphrase, saving as `%s`.", s.file) + s.logger.Info( + fmt.Sprintf("Encrypted backup using given passphrase, saving as `%s`.", s.file), + ) return nil } @@ -572,7 +583,9 @@ func (s *script) pruneBackups() error { // is non-nil. func (s *script) must(err error) { if err != nil { - s.logger.Errorf("Fatal error running backup: %s", err) + s.logger.Error( + fmt.Sprintf("Fatal error running backup: %s", err), + ) panic(err) } } diff --git a/go.mod b/go.mod index 3d290f7..2572603 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,6 @@ require ( github.com/minio/minio-go/v7 v7.0.61 github.com/otiai10/copy v1.11.0 github.com/pkg/sftp v1.13.5 - github.com/sirupsen/logrus v1.9.3 github.com/studio-b12/gowebdav v0.9.0 golang.org/x/crypto v0.11.0 golang.org/x/sync v0.3.0 @@ -52,6 +51,7 @@ require ( github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/rs/xid v1.5.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect golang.org/x/net v0.12.0 // indirect golang.org/x/sys v0.10.0 // indirect golang.org/x/text v0.11.0 // indirect