diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2023-05-25 18:18:35 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2023-05-25 18:31:32 +1000 |
commit | e0ecc9e835ef56fae7ee58408ba91e29f000344d (patch) | |
tree | 94308647a248d326c1e0cdb863623cfe63b7d66b /pkg/app | |
parent | 1f8e838052a1bc083cb50560431b2f115df8acb6 (diff) |
Allow global logging when developing
I'll be honest, for all I know logging should be global in general: it is
a pain to pass a logger to any struct that needs it. But smart people on the
internet tell me otherwise, and I do like the idea of not having any global
variables lying around.
Nonetheless, I often need to log things when locally debugging and that's a
different kind of logging than the kind you would include in the actual
released binary. For example if I want to log something from gocui, I would
rather not have gocui depend on lazygit's logging setup.
Diffstat (limited to 'pkg/app')
-rw-r--r-- | pkg/app/app.go | 14 | ||||
-rw-r--r-- | pkg/app/entry_point.go | 9 | ||||
-rw-r--r-- | pkg/app/logging.go | 56 |
3 files changed, 21 insertions, 58 deletions
diff --git a/pkg/app/app.go b/pkg/app/app.go index af34b7157..e77d2868c 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -10,6 +10,7 @@ import ( "strings" "github.com/go-errors/errors" + "github.com/sirupsen/logrus" "github.com/jesseduffield/generics/slices" appTypes "github.com/jesseduffield/lazygit/pkg/app/types" @@ -22,6 +23,7 @@ import ( "github.com/jesseduffield/lazygit/pkg/env" "github.com/jesseduffield/lazygit/pkg/gui" "github.com/jesseduffield/lazygit/pkg/i18n" + "github.com/jesseduffield/lazygit/pkg/logs" "github.com/jesseduffield/lazygit/pkg/updates" ) @@ -76,6 +78,18 @@ func NewCommon(config config.AppConfigurer) (*common.Common, error) { }, nil } +func newLogger(cfg config.AppConfigurer) *logrus.Entry { + if cfg.GetDebug() { + logPath, err := config.LogPath() + if err != nil { + log.Fatal(err) + } + return logs.NewDevelopmentLogger(logPath) + } else { + return logs.NewProductionLogger() + } +} + // NewApp bootstrap a new application func NewApp(config config.AppConfigurer, common *common.Common) (*App, error) { app := &App{ diff --git a/pkg/app/entry_point.go b/pkg/app/entry_point.go index 9519abb65..c8a39dc08 100644 --- a/pkg/app/entry_point.go +++ b/pkg/app/entry_point.go @@ -16,7 +16,7 @@ import ( "github.com/jesseduffield/lazygit/pkg/config" "github.com/jesseduffield/lazygit/pkg/env" integrationTypes "github.com/jesseduffield/lazygit/pkg/integration/types" - "github.com/jesseduffield/lazygit/pkg/logs" + "github.com/jesseduffield/lazygit/pkg/logs/tail" "github.com/jesseduffield/lazygit/pkg/secureexec" "github.com/jesseduffield/lazygit/pkg/utils" "github.com/samber/lo" @@ -106,7 +106,12 @@ func Start(buildInfo *BuildInfo, integrationTest integrationTypes.IntegrationTes } if cliArgs.TailLogs { - logs.TailLogs() + logPath, err := config.LogPath() + if err != nil { + log.Fatal(err.Error()) + } + + tail.TailLogs(logPath) os.Exit(0) } diff --git a/pkg/app/logging.go b/pkg/app/logging.go deleted file mode 100644 index 65bed7823..000000000 --- a/pkg/app/logging.go +++ /dev/null @@ -1,56 +0,0 @@ -package app - -import ( - "io" - "log" - "os" - - "github.com/jesseduffield/lazygit/pkg/config" - "github.com/sirupsen/logrus" -) - -func newLogger(config config.AppConfigurer) *logrus.Entry { - var log *logrus.Logger - if config.GetDebug() { - log = newDevelopmentLogger() - } else { - log = newProductionLogger() - } - - // highly recommended: tail -f development.log | humanlog - // https://github.com/aybabtme/humanlog - log.Formatter = &logrus.JSONFormatter{} - - return log.WithFields(logrus.Fields{}) -} - -func newProductionLogger() *logrus.Logger { - log := logrus.New() - log.Out = io.Discard - log.SetLevel(logrus.ErrorLevel) - return log -} - -func newDevelopmentLogger() *logrus.Logger { - logger := logrus.New() - logger.SetLevel(getLogLevel()) - logPath, err := config.LogPath() - if err != nil { - log.Fatal(err) - } - file, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666) - if err != nil { - log.Fatalf("Unable to log to log file: %v", err) - } - logger.SetOutput(file) - return logger -} - -func getLogLevel() logrus.Level { - strLevel := os.Getenv("LOG_LEVEL") - level, err := logrus.ParseLevel(strLevel) - if err != nil { - return logrus.DebugLevel - } - return level -} |