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§
Structs§
- Debug
Level - Default to
VerbosityFilter::Debug
- Error
Level - Default to
VerbosityFilter::Error
- Info
Level - Default to
VerbosityFilter::Info
- OffLevel
- Default to
VerbosityFilter::Off
(no logging) - Trace
Level - Default to
VerbosityFilter::Trace
- Verbosity
- Logging flags to
#[command(flatten)]
into your CLI - Warn
Level - Default to
VerbosityFilter::Warn
Enums§
- Verbosity
Filter - A representation of the log level filter.
Traits§
- LogLevel
- Customize the default log-level and associated help