on main help sign in
fix: setup logging in server and client commands
commit65974bb4ea1c57ba942caee8e7748b67446d3487 authorAyman Bagabas <ayman.bagabas@gmail.com> dateTue 17 Mar 2026, 13:30 (7 months ago) parentee13558
3 files changed+10−16
internal/cmd/root.go+6 internal/cmd/server.go+4−9 internal/config/load.go−7
internal/cmd/root.go+6
@@ -24,6 +24,7 @@ import (
2424 "github.com/charmbracelet/crush/internal/client"
2525 "github.com/charmbracelet/crush/internal/config"
2626 "github.com/charmbracelet/crush/internal/event"
27+ crushlog "github.com/charmbracelet/crush/internal/log"
2728 "github.com/charmbracelet/crush/internal/proto"
2829 "github.com/charmbracelet/crush/internal/server"
2930 "github.com/charmbracelet/crush/internal/ui/common"
@@ -235,6 +236,11 @@ func connectToServer(cmd *cobra.Command) (*client.Client, *proto.Workspace, func
235236 event.Init()
236237 }
237238
239+ if ws.Config != nil {
240+ logFile := filepath.Join(ws.Config.Options.DataDirectory, "logs", "crush.log")
241+ crushlog.Setup(logFile, debug)
242+ }
243+
238244 cleanup := func() { _ = c.DeleteWorkspace(context.Background(), ws.ID) }
239245 return c, ws, cleanup, nil
240246}
internal/cmd/server.go+4−9
@@ -7,9 +7,11 @@ import (
77 "log/slog"
88 "os"
99 "os/signal"
10+ "path/filepath"
1011 "time"
1112
1213 "github.com/charmbracelet/crush/internal/config"
14+ crushlog "github.com/charmbracelet/crush/internal/log"
1315 "github.com/charmbracelet/crush/internal/server"
1416 "github.com/spf13/cobra"
1517)
@@ -39,15 +41,8 @@ var serverCmd = &cobra.Command{
3941 return fmt.Errorf("failed to load configuration: %v", err)
4042 }
4143
42− handler := slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
43− Level: slog.LevelInfo,
44− })
45− if debug {
46− handler = slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
47− Level: slog.LevelDebug,
48− })
49− }
50− slog.SetDefault(slog.New(handler))
44+ logFile := filepath.Join(config.GlobalCacheDir(), "server-"+safeNameRegexp.ReplaceAllString(serverHost, "_"), "crush.log")
45+ crushlog.Setup(logFile, debug)
5146
5247 hostURL, err := server.ParseHostURL(serverHost)
5348 if err != nil {
internal/config/load.go−7
@@ -22,7 +22,6 @@ import (
2222 "github.com/charmbracelet/crush/internal/env"
2323 "github.com/charmbracelet/crush/internal/fsext"
2424 "github.com/charmbracelet/crush/internal/home"
25− "github.com/charmbracelet/crush/internal/log"
2625 powernapConfig "github.com/charmbracelet/x/powernap/pkg/config"
2726 "github.com/qjebbs/go-jsons"
2827)
@@ -52,12 +51,6 @@ func Load(workingDir, dataDir string, debug bool) (*ConfigStore, error) {
5251 cfg.Options.Debug = true
5352 }
5453
55− // Setup logs
56− log.Setup(
57− filepath.Join(cfg.Options.DataDirectory, "logs", fmt.Sprintf("%s.log", appName)),
58− cfg.Options.Debug,
59− )
60−
6154 // Load workspace config last so it has highest priority.
6255 if wsData, err := os.ReadFile(store.workspacePath); err == nil && len(wsData) > 0 {
6356 merged, mergeErr := loadFromBytes(append([][]byte{mustMarshalConfig(cfg)}, wsData))