Crate clap_verbosity_flag

Source
Expand description

Easily add --verbose and --quiet flags to CLIs using Clap.

§Examples

To get --quiet and --verbose flags through your entire program, just flatten Verbosity:

use clap::Parser;
use clap_verbosity_flag::Verbosity;

#[derive(Debug, Parser)]
struct Cli {
    #[command(flatten)]
    verbosity: Verbosity,

    // ... other options
}

You can then use this to configure your logger:

let cli = Cli::parse();
env_logger::Builder::new()
    .filter_level(cli.verbosity.log_level_filter())
    .init();

§Use with tracing

To use with tracing, disable the log feature flag and enable the tracing feature flag:

cargo add clap_verbosity_flag --no-default features --features tracing

Then you can use it like this:

let cli = Cli::parse();
tracing_subscriber::fmt()
    .with_max_level(cli.verbosity)
    .init();

§Using --verbose and --quiet flags

The default verbosity level will cause log / tracing to only report errors. The flags can be specified multiple times to increase or decrease the verbosity level.

  • silence output: -q / --quiet
  • show warnings: -v / --verbose
  • show info: -vv / --verbose --verbose
  • show debug: -vvv / --verbose --verbose --verbose
  • show trace: -vvvv / --verbose --verbose --verbose --verbose

§Customizing the default log level

By default, the log level is set to Error. To customize this to a different level, pass a type implementing the LogLevel trait to Verbosity:

use clap_verbosity_flag::{Verbosity, InfoLevel};

#[derive(Debug, Parser)]
struct Cli {
    #[command(flatten)]
    verbose: Verbosity<InfoLevel>,
}

Or implement our LogLevel trait to customize the default log level and help output.

Modules§

loglog
tracingtracing

Structs§

DebugLevel
Default to VerbosityFilter::Debug
ErrorLevel
Default to VerbosityFilter::Error
InfoLevel
Default to VerbosityFilter::Info
OffLevel
Default to VerbosityFilter::Off (no logging)
TraceLevel
Default to VerbosityFilter::Trace
Verbosity
Logging flags to #[command(flatten)] into your CLI
WarnLevel
Default to VerbosityFilter::Warn

Enums§

VerbosityFilter
A representation of the log level filter.

Traits§

LogLevel
Customize the default log-level and associated help