Skip to content

Commit bff2159

Browse files
committed
feat: add logging capabilities
Signed-off-by: addrian-77 <lunguadrian30@gmail.com>
1 parent 939abc3 commit bff2159

5 files changed

Lines changed: 37 additions & 4 deletions

File tree

tockloader-cli/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@ glob = "0.3.1"
2626
inquire = "0.7.5"
2727
tockloader-lib = { path = "../tockloader-lib/" }
2828
anyhow = "1.0.89"
29+
env_logger = "0.11.8"
30+
log = "0.4.27"

tockloader-cli/src/cli.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,13 @@ pub fn make_cli() -> Command {
1414
.version(crate_version!())
1515
.subcommand_required(true)
1616
.subcommands(get_subcommands())
17-
.args([
18-
arg!(--debug "Print additional debugging information").action(clap::ArgAction::SetTrue)
19-
])
17+
.arg(
18+
arg!(--"log-level" <LEVEL>)
19+
.required(false)
20+
.value_parser(["error", "warn", "info", "debug", "trace"])
21+
.default_value("info")
22+
.global(true),
23+
)
2024
// Note: arg_require_else_help will trigger the help command if no argument/subcommand is given.
2125
// This means that the --debug flag will not trigger the help menu, even if alone it does nothing.
2226
}

tockloader-cli/src/main.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,28 @@ async fn main() -> Result<()> {
134134
let mut cmd = cli::make_cli();
135135
let matches = cmd.get_matches_mut();
136136

137+
let user_level = matches
138+
.get_one::<String>("log-level")
139+
.map(String::as_str)
140+
.unwrap();
141+
142+
let mut builder = env_logger::Builder::new();
143+
144+
let cli_level = match user_level {
145+
"error" => log::LevelFilter::Error,
146+
"warn" => log::LevelFilter::Warn,
147+
"info" => log::LevelFilter::Info,
148+
"debug" => log::LevelFilter::Debug,
149+
"trace" => log::LevelFilter::Trace,
150+
level => panic!("Unknown log level: {}", level),
151+
};
152+
153+
builder.filter_level(log::LevelFilter::Off);
154+
builder.filter_module("tockloader-lib", cli_level);
155+
builder.filter_module("tockloader", cli_level);
156+
157+
builder.init();
158+
137159
match matches.subcommand() {
138160
Some(("listen", sub_matches)) => {
139161
cli::validate(&mut cmd, sub_matches);

tockloader-lib/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ toml = "0.8.19"
2020
serde = { version = "1.0.210", features = ["derive"] }
2121
thiserror = "1.0.63"
2222
async-trait = "0.1.88"
23+
log = "0.4.27"

tockloader-lib/src/connection.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use tokio::io::AsyncWriteExt;
77
use tokio_serial::{FlowControl, Parity, SerialPort, SerialStream, StopBits};
88

99
use crate::errors::TockloaderError;
10-
10+
use log::info;
1111
pub struct ProbeTargetInfo {
1212
pub chip: String,
1313
pub core: usize,
@@ -78,13 +78,15 @@ impl Connection for ProbeRSConnection {
7878
let probe = self.debug_probe.open()?;
7979

8080
self.session = Some(probe.attach(&self.target_info.chip, Permissions::default())?);
81+
info!("ProbeRS connection opened succesfully.");
8182

8283
Ok(())
8384
}
8485

8586
async fn close(&mut self) -> Result<(), TockloaderError> {
8687
// Session implements Drop, so we don't need to explicitly close it.
8788
self.session = None;
89+
info!("ProbeRS connection closed.");
8890
Ok(())
8991
}
9092

@@ -130,6 +132,7 @@ impl Connection for SerialConnection {
130132
stream.write_data_terminal_ready(self.target_info.data_terminal_ready)?;
131133

132134
self.stream = Some(stream);
135+
info!("Serial connection opened succesfully.");
133136
Ok(())
134137
}
135138

@@ -140,6 +143,7 @@ impl Connection for SerialConnection {
140143
.await
141144
.map_err(|e| TockloaderError::Serial(e.into()))?;
142145
}
146+
info!("Serial connection closed.");
143147
Ok(())
144148
}
145149

0 commit comments

Comments
 (0)