From 65974bb4ea1c57ba942caee8e7748b67446d3487 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Tue, 17 Mar 2026 13:30:47 +0300 Subject: [PATCH] fix: setup logging in server and client commands --- internal/cmd/root.go | 6 ++++++ internal/cmd/server.go | 13 ++++--------- internal/config/load.go | 7 ------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/internal/cmd/root.go b/internal/cmd/root.go index c1b702994ef83216219ac1aaaf70b4e3f956a873..8aa18b0e7983378bdb052020bc98154673f26495 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -24,6 +24,7 @@ import ( "github.com/charmbracelet/crush/internal/client" "github.com/charmbracelet/crush/internal/config" "github.com/charmbracelet/crush/internal/event" + crushlog "github.com/charmbracelet/crush/internal/log" "github.com/charmbracelet/crush/internal/proto" "github.com/charmbracelet/crush/internal/server" "github.com/charmbracelet/crush/internal/ui/common" @@ -235,6 +236,11 @@ func connectToServer(cmd *cobra.Command) (*client.Client, *proto.Workspace, func event.Init() } + if ws.Config != nil { + logFile := filepath.Join(ws.Config.Options.DataDirectory, "logs", "crush.log") + crushlog.Setup(logFile, debug) + } + cleanup := func() { _ = c.DeleteWorkspace(context.Background(), ws.ID) } return c, ws, cleanup, nil } diff --git a/internal/cmd/server.go b/internal/cmd/server.go index 9311d2f3895299c6f30d70ebc9e2b2a02528b05e..67fb4c771b590495b6baa8dd9da2d8fd9de4822a 100644 --- a/internal/cmd/server.go +++ b/internal/cmd/server.go @@ -7,9 +7,11 @@ import ( "log/slog" "os" "os/signal" + "path/filepath" "time" "github.com/charmbracelet/crush/internal/config" + crushlog "github.com/charmbracelet/crush/internal/log" "github.com/charmbracelet/crush/internal/server" "github.com/spf13/cobra" ) @@ -39,15 +41,8 @@ var serverCmd = &cobra.Command{ return fmt.Errorf("failed to load configuration: %v", err) } - handler := slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{ - Level: slog.LevelInfo, - }) - if debug { - handler = slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{ - Level: slog.LevelDebug, - }) - } - slog.SetDefault(slog.New(handler)) + logFile := filepath.Join(config.GlobalCacheDir(), "server-"+safeNameRegexp.ReplaceAllString(serverHost, "_"), "crush.log") + crushlog.Setup(logFile, debug) hostURL, err := server.ParseHostURL(serverHost) if err != nil { diff --git a/internal/config/load.go b/internal/config/load.go index 967204c5ac15913fbe563733edbace59f49f1993..b469ca95ed86d5d9931f15d04b4b28ee666b2663 100644 --- a/internal/config/load.go +++ b/internal/config/load.go @@ -22,7 +22,6 @@ import ( "github.com/charmbracelet/crush/internal/env" "github.com/charmbracelet/crush/internal/fsext" "github.com/charmbracelet/crush/internal/home" - "github.com/charmbracelet/crush/internal/log" powernapConfig "github.com/charmbracelet/x/powernap/pkg/config" "github.com/qjebbs/go-jsons" ) @@ -52,12 +51,6 @@ func Load(workingDir, dataDir string, debug bool) (*ConfigStore, error) { cfg.Options.Debug = true } - // Setup logs - log.Setup( - filepath.Join(cfg.Options.DataDirectory, "logs", fmt.Sprintf("%s.log", appName)), - cfg.Options.Debug, - ) - // Load workspace config last so it has highest priority. if wsData, err := os.ReadFile(store.workspacePath); err == nil && len(wsData) > 0 { merged, mergeErr := loadFromBytes(append([][]byte{mustMarshalConfig(cfg)}, wsData))