diff --git a/cmd/root/logger.go b/cmd/root/logger.go index 0ad6756a..be342a7a 100644 --- a/cmd/root/logger.go +++ b/cmd/root/logger.go @@ -73,6 +73,7 @@ type logFlags struct { file flags.LogFileFlag level flags.LogLevelFlag output flags.Output + debug bool } func (f *logFlags) makeLogHandler(opts slog.HandlerOptions) (slog.Handler, error) { @@ -95,6 +96,10 @@ func (f *logFlags) makeLogHandler(opts slog.HandlerOptions) (slog.Handler, error } func (f *logFlags) initializeContext(ctx context.Context) (context.Context, error) { + if f.debug { + f.level.Set("debug") + } + opts := slog.HandlerOptions{} opts.Level = f.level.Level() opts.AddSource = true @@ -137,9 +142,17 @@ func initLogFlags(cmd *cobra.Command) *logFlags { f.output.Set(v) } - cmd.PersistentFlags().Var(&f.file, "log-file", "file to write logs to") - cmd.PersistentFlags().Var(&f.level, "log-level", "log level") - cmd.PersistentFlags().Var(&f.output, "log-format", "log output format (text or json)") + flags := cmd.PersistentFlags() + flags.BoolVar(&f.debug, "debug", false, "enable debug logging") + flags.Var(&f.file, "log-file", "file to write logs to") + flags.Var(&f.level, "log-level", "log level") + flags.Var(&f.output, "log-format", "log output format (text or json)") + + // mark fine-grained flags hidden from global --help + flags.MarkHidden("log-file") + flags.MarkHidden("log-level") + flags.MarkHidden("log-format") + cmd.RegisterFlagCompletionFunc("log-file", f.file.Complete) cmd.RegisterFlagCompletionFunc("log-level", f.level.Complete) cmd.RegisterFlagCompletionFunc("log-format", f.output.Complete)