diff --git a/cmd/logs.go b/cmd/logs.go index 30beb89ae9d2e1ec37f368a9261828fbfdf9417a..d690625de90d8a0f7ec42d366f5d414c21dbebf0 100644 --- a/cmd/logs.go +++ b/cmd/logs.go @@ -3,6 +3,7 @@ package cmd import ( "encoding/json" "fmt" + "os" "path/filepath" "slices" "time" @@ -26,16 +27,22 @@ var logsCmd = &cobra.Command{ if err != nil { return fmt.Errorf("failed to get current working directory: %v", err) } + log.SetLevel(log.DebugLevel) cfg, err := config.Load(cwd, false) if err != nil { return fmt.Errorf("failed to load configuration: %v", err) } - t, err := tail.TailFile(filepath.Join(cfg.Options.DataDirectory, "logs", "crush.log"), tail.Config{Follow: true, ReOpen: true, Logger: tail.DiscardingLogger}) + logsFile := filepath.Join(cfg.WorkingDir(), cfg.Options.DataDirectory, "logs", "crush.log") + _, err = os.Stat(logsFile) + if os.IsNotExist(err) { + log.Warn("Looks like you are not in a crush project. No logs found.") + return nil + } + t, err := tail.TailFile(logsFile, tail.Config{Follow: true, ReOpen: true, Logger: tail.DiscardingLogger}) if err != nil { return fmt.Errorf("failed to tail log file: %v", err) } - log.SetLevel(log.DebugLevel) // Print the text of each received line for line := range t.Lines { var data map[string]any