this repo has no description

improve readability of interactive logs

Changed files
+18 -1
cmd
+18 -1
cmd/up.go
··· 29 29 "github.com/charmbracelet/wish" 30 30 "github.com/coreos/go-oidc/v3/oidc" 31 31 "github.com/knadh/koanf/providers/file" 32 + "github.com/mattn/go-isatty" 32 33 "github.com/mhale/smtpd" 33 34 sloghttp "github.com/samber/slog-http" 34 35 "go.uber.org/zap" ··· 61 62 tlsCert string 62 63 tlsKey string 63 64 onDemandTLS bool 65 + logFormat string 64 66 } 65 67 66 68 cmd := &cobra.Command{ ··· 77 79 return nil 78 80 }, 79 81 RunE: func(cmd *cobra.Command, args []string) error { 80 - logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{})) 82 + var logger *slog.Logger 83 + if flags.logFormat == "" { 84 + if isatty.IsTerminal(os.Stdout.Fd()) { 85 + logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{})) 86 + } else { 87 + logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{})) 88 + } 89 + } else if flags.logFormat == "json" { 90 + logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{})) 91 + } else if flags.logFormat == "text" { 92 + logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{})) 93 + } else { 94 + return fmt.Errorf("invalid log format: %s", flags.logFormat) 95 + } 96 + 81 97 if k.String("dir") == "" { 82 98 logger.Error("dir cannot be empty") 83 99 return ErrSilent ··· 417 433 cmd.Flags().StringVar(&flags.sshPrivateKey, "ssh-host-key", "", "ssh host key") 418 434 cmd.Flags().StringVar(&flags.tlsCert, "tls-cert", "", "tls certificate file") 419 435 cmd.Flags().StringVar(&flags.tlsKey, "tls-key", "", "tls key file") 436 + cmd.Flags().StringVar(&flags.logFormat, "log-format", "", "log format (json or text)") 420 437 cmd.Flags().BoolVar(&flags.enableCrons, "enable-crons", false, "enable cron jobs") 421 438 cmd.Flags().Bool("cron", false, "enable cron jobs") 422 439 cmd.Flags().BoolVar(&flags.onDemandTLS, "on-demand-tls", false, "enable on-demand tls")