Skip to content

Commit 98b01ca

Browse files
committed
improve readability of interactive logs
1 parent ff77fee commit 98b01ca

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

cmd/up.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/charmbracelet/wish"
3030
"github.com/coreos/go-oidc/v3/oidc"
3131
"github.com/knadh/koanf/providers/file"
32+
"github.com/mattn/go-isatty"
3233
"github.com/mhale/smtpd"
3334
sloghttp "github.com/samber/slog-http"
3435
"go.uber.org/zap"
@@ -61,6 +62,7 @@ func NewCmdUp() *cobra.Command {
6162
tlsCert string
6263
tlsKey string
6364
onDemandTLS bool
65+
logFormat string
6466
}
6567

6668
cmd := &cobra.Command{
@@ -77,7 +79,21 @@ func NewCmdUp() *cobra.Command {
7779
return nil
7880
},
7981
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+
8197
if k.String("dir") == "" {
8298
logger.Error("dir cannot be empty")
8399
return ErrSilent
@@ -417,6 +433,7 @@ func NewCmdUp() *cobra.Command {
417433
cmd.Flags().StringVar(&flags.sshPrivateKey, "ssh-host-key", "", "ssh host key")
418434
cmd.Flags().StringVar(&flags.tlsCert, "tls-cert", "", "tls certificate file")
419435
cmd.Flags().StringVar(&flags.tlsKey, "tls-key", "", "tls key file")
436+
cmd.Flags().StringVar(&flags.logFormat, "log-format", "", "log format (json or text)")
420437
cmd.Flags().BoolVar(&flags.enableCrons, "enable-crons", false, "enable cron jobs")
421438
cmd.Flags().Bool("cron", false, "enable cron jobs")
422439
cmd.Flags().BoolVar(&flags.onDemandTLS, "on-demand-tls", false, "enable on-demand tls")

0 commit comments

Comments
 (0)