Skip to content

Commit ca5f245

Browse files
committed
infra: enable tracing log level
The previous work on this made it *possible*, this actually *uses* that new possibility. There is only a single tracing message at present, used to indicate that tracing itself is turned on, but we can use it for any future debugging work.
1 parent bc471dc commit ca5f245

File tree

5 files changed

+23
-4
lines changed

5 files changed

+23
-4
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/archive/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ cfg-if = "1.0"
1919
headers = "0.4"
2020
thiserror = "1.0.16"
2121
attohttpc = { version = "0.28", default-features = false, features = ["json", "compress", "tls-rustls-native-roots"] }
22+
log = { version = "0.4", features = ["std"] }

crates/volta-core/src/log.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! This module provides a custom Logger implementation for use with the `log` crate
22
use console::style;
3-
use log::{Level, LevelFilter, Log, Metadata, Record, SetLoggerError};
3+
use log::{trace, Level, LevelFilter, Log, Metadata, Record, SetLoggerError};
44
use std::env;
55
use std::fmt::Display;
66
use std::io::IsTerminal;
@@ -37,10 +37,12 @@ pub enum LogContext {
3737
}
3838

3939
/// Represents the level of verbosity that was requested by the user
40+
#[derive(Debug, Copy, Clone)]
4041
pub enum LogVerbosity {
4142
Quiet,
4243
Default,
4344
Verbose,
45+
VeryVerbose,
4446
}
4547

4648
pub struct Logger {
@@ -64,9 +66,11 @@ impl Log for Logger {
6466
match record.level() {
6567
Level::Error => self.log_error(record.args()),
6668
Level::Warn => self.log_warning(record.args()),
67-
Level::Debug => eprintln!("[verbose] {}", record.args()),
6869
// all info-level messages go to stdout
69-
_ => println!("{}", record.args()),
70+
Level::Info => println!("{}", record.args()),
71+
// all debug- and trace-level messages go to stderr
72+
Level::Debug => eprintln!("[verbose] {}", record.args()),
73+
Level::Trace => eprintln!("[trace] {}", record.args()),
7074
}
7175
}
7276
}
@@ -90,6 +94,7 @@ impl Logger {
9094
LogVerbosity::Quiet => LevelFilter::Error,
9195
LogVerbosity::Default => level_from_env(),
9296
LogVerbosity::Verbose => LevelFilter::Debug,
97+
LogVerbosity::VeryVerbose => LevelFilter::Trace,
9398
};
9499

95100
Logger { context, level }
@@ -159,6 +164,7 @@ fn level_from_env() -> LevelFilter {
159164
.and_then(|level| level.to_uppercase().parse().ok())
160165
.unwrap_or_else(|| {
161166
if std::io::stdout().is_terminal() {
167+
trace!("using fallback log level (info)");
162168
LevelFilter::Info
163169
} else {
164170
LevelFilter::Error

src/cli.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ pub(crate) struct Volta {
2525
#[arg(long, global = true)]
2626
pub(crate) verbose: bool,
2727

28+
/// Enables trace-level diagnostics.
29+
#[arg(long, global = true, requires = "verbose")]
30+
pub(crate) very_verbose: bool,
31+
2832
/// Prevents unnecessary output
2933
#[arg(
3034
long,

src/main.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,20 @@ pub fn main() {
1616
let volta = cli::Volta::parse();
1717
let verbosity = match (&volta.verbose, &volta.quiet) {
1818
(false, false) => LogVerbosity::Default,
19-
(true, false) => LogVerbosity::Verbose,
19+
(true, false) => {
20+
if volta.very_verbose {
21+
LogVerbosity::VeryVerbose
22+
} else {
23+
LogVerbosity::Verbose
24+
}
25+
}
2026
(false, true) => LogVerbosity::Quiet,
2127
(true, true) => {
2228
unreachable!("Clap should prevent the user from providing both --verbose and --quiet")
2329
}
2430
};
2531
Logger::init(LogContext::Volta, verbosity).expect("Only a single logger should be initialized");
32+
log::trace!("log level: {verbosity:?}");
2633

2734
let mut session = Session::init();
2835
session.add_event_start(ActivityKind::Volta);

0 commit comments

Comments
 (0)