From f308060f47abd0c4ff8ddf8ea93f746a5993e44b Mon Sep 17 00:00:00 2001 From: bryan newbold Date: Thu, 29 Jan 2026 10:32:42 -0800 Subject: [PATCH] gosky: refactor log setup --- cmd/gosky/car.go | 1 + cmd/gosky/debug.go | 3 +++ cmd/gosky/main.go | 38 +++++++++++++++++++++++++++++--------- cmd/gosky/streamdiff.go | 2 ++ cmd/gosky/sync.go | 1 + 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/cmd/gosky/car.go b/cmd/gosky/car.go index 2098a2cd..42b97d6e 100644 --- a/cmd/gosky/car.go +++ b/cmd/gosky/car.go @@ -38,6 +38,7 @@ var carUnpackCmd = &cli.Command{ }, ArgsUsage: ``, Action: func(cctx *cli.Context) error { + log := configLogger(cctx, os.Stderr) ctx := context.Background() arg := cctx.Args().First() if arg == "" { diff --git a/cmd/gosky/debug.go b/cmd/gosky/debug.go index 8eb0110d..4ac54c74 100644 --- a/cmd/gosky/debug.go +++ b/cmd/gosky/debug.go @@ -301,6 +301,8 @@ var compareStreamsCmd = &cli.Command{ }, ArgsUsage: ``, Action: func(cctx *cli.Context) error { + log := configLogger(cctx, os.Stderr) + h1 := cctx.String("host1") h2 := cctx.String("host2") @@ -819,6 +821,7 @@ var debugCompareReposCmd = &cli.Command{ }, ArgsUsage: ``, Action: func(cctx *cli.Context) error { + log := configLogger(cctx, os.Stderr) ctx := cctx.Context did, err := syntax.ParseAtIdentifier(cctx.Args().First()) if err != nil { diff --git a/cmd/gosky/main.go b/cmd/gosky/main.go index 1c6416a3..f01ed580 100644 --- a/cmd/gosky/main.go +++ b/cmd/gosky/main.go @@ -44,8 +44,6 @@ import ( "golang.org/x/time/rate" ) -var log = slog.Default().With("system", "gosky") - func main() { run(os.Args) } @@ -77,13 +75,12 @@ func run(args []string) { Value: "https://plc.directory", EnvVars: []string{"ATP_PLC_HOST"}, }, - } - - _, _, err := cliutil.SetupSlog(cliutil.LogOptions{}) - if err != nil { - fmt.Fprintf(os.Stderr, "logging setup error: %s\n", err.Error()) - os.Exit(1) - return + &cli.StringFlag{ + Name: "log-level", + Usage: "log verbosity level (debug, info, warn, error)", + Value: "info", + EnvVars: []string{"GOSKY_LOG_LEVEL", "LOG_LEVEL", "BSKYLOG_LOG_LEVEL", "GOLOG_LOG_LEVEL"}, + }, } app.Commands = []*cli.Command{ @@ -161,6 +158,7 @@ var readRepoStreamCmd = &cli.Command{ }, ArgsUsage: `[ [cursor]]`, Action: func(cctx *cli.Context) error { + log := configLogger(cctx, os.Stderr) ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT) defer stop() @@ -849,3 +847,25 @@ var verifyUserCmd = &cli.Command{ return nil }, } + +func configLogger(cmd *cli.Context, writer *os.File) *slog.Logger { + var level slog.Level + switch cmd.String("log-level") { + case "debug": + level = slog.LevelDebug + case "info": + level = slog.LevelInfo + case "warn": + level = slog.LevelWarn + case "error": + level = slog.LevelError + default: + level = slog.LevelInfo + } + + logger := slog.New(slog.NewJSONHandler(writer, &slog.HandlerOptions{ + Level: level, + })) + + return logger +} diff --git a/cmd/gosky/streamdiff.go b/cmd/gosky/streamdiff.go index e1ab67af..845787e0 100644 --- a/cmd/gosky/streamdiff.go +++ b/cmd/gosky/streamdiff.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "net/http" + "os" comatproto "github.com/bluesky-social/indigo/api/atproto" "github.com/bluesky-social/indigo/events" @@ -20,6 +21,7 @@ var streamCompareCmd = &cli.Command{ Flags: []cli.Flag{}, ArgsUsage: ` `, Action: func(cctx *cli.Context) error { + log := configLogger(cctx, os.Stderr) d := websocket.DefaultDialer args, err := needArgs(cctx, "hostA", "hostB") diff --git a/cmd/gosky/sync.go b/cmd/gosky/sync.go index 13c60f42..e401078d 100644 --- a/cmd/gosky/sync.go +++ b/cmd/gosky/sync.go @@ -33,6 +33,7 @@ var syncGetRepoCmd = &cli.Command{ }, }, Action: func(cctx *cli.Context) error { + log := configLogger(cctx, os.Stderr) ctx := context.Background() arg := cctx.Args().First() if arg == "" { -- 2.51.2