+18
-1
cmd/up.go
+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")