@@ -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