Skip to content

Commit b257ea6

Browse files
authored
Merge pull request #555 from SteveL-MSFT/registry-trace
Add proper tracing to `registry` resource
2 parents 5b46548 + 861aa55 commit b257ea6

File tree

4 files changed

+248
-11
lines changed

4 files changed

+248
-11
lines changed

registry/Cargo.lock

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

registry/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ schemars = "0.8.0"
2121
serde = "1.0.130"
2222
serde_json = "1.0.68"
2323
thiserror = "1.0.30"
24+
tracing = { version = "0.1.37" }
25+
tracing-subscriber = { version = "0.3.17", features = ["ansi", "env-filter", "json"] }
2426
utfx = "0.1.0"
2527

2628
[build-dependencies]

registry/src/main.rs

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ use clap::Parser;
1111
use registry_helper::RegistryHelper;
1212
use schemars::schema_for;
1313
use std::process::exit;
14-
14+
use tracing::{debug, error};
15+
use tracing_subscriber::{filter::LevelFilter, prelude::__tracing_subscriber_SubscriberExt, EnvFilter, Layer};
1516
use crate::config::Registry;
1617

1718
mod args;
@@ -28,27 +29,30 @@ fn main() {
2829
#[cfg(debug_assertions)]
2930
check_debug();
3031

32+
enable_tracing();
33+
3134
let args = Arguments::parse();
3235
match args.subcommand {
3336
args::SubCommand::Query { key_path, value_name, recurse } => {
34-
eprintln!("Get key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}");
37+
debug!("Get key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}");
3538
},
3639
args::SubCommand::Set { key_path, value } => {
37-
eprintln!("Set key_path: {key_path}, value: {value}");
40+
debug!("Set key_path: {key_path}, value: {value}");
3841
},
3942
args::SubCommand::Remove { key_path, value_name, recurse } => {
40-
eprintln!("Remove key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}");
43+
debug!("Remove key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}");
4144
},
4245
args::SubCommand::Find { key_path, find, recurse, keys_only, values_only } => {
43-
eprintln!("Find key_path: {key_path}, find: {find}, recurse: {recurse:?}, keys_only: {keys_only:?}, values_only: {values_only:?}");
46+
debug!("Find key_path: {key_path}, find: {find}, recurse: {recurse:?}, keys_only: {keys_only:?}, values_only: {values_only:?}");
4447
},
4548
args::SubCommand::Config { subcommand } => {
4649
match subcommand {
4750
args::ConfigSubCommand::Get{input} => {
51+
debug!("Get input: {input}");
4852
let reg_helper = match RegistryHelper::new(&input) {
4953
Ok(reg_helper) => reg_helper,
5054
Err(err) => {
51-
eprintln!("Error: {err}");
55+
error!("{err}");
5256
exit(EXIT_INVALID_INPUT);
5357
}
5458
};
@@ -58,16 +62,17 @@ fn main() {
5862
println!("{json}");
5963
},
6064
Err(err) => {
61-
eprintln!("Error: {err}");
65+
error!("{err}");
6266
exit(EXIT_REGISTRY_ERROR);
6367
}
6468
}
6569
},
6670
args::ConfigSubCommand::Set{input, what_if} => {
71+
debug!("Set input: {input}, what_if: {what_if}");
6772
let mut reg_helper = match RegistryHelper::new(&input) {
6873
Ok(reg_helper) => reg_helper,
6974
Err(err) => {
70-
eprintln!("Error: {err}");
75+
error!("{err}");
7176
exit(EXIT_INVALID_INPUT);
7277
}
7378
};
@@ -82,23 +87,24 @@ fn main() {
8287
}
8388
},
8489
Err(err) => {
85-
eprintln!("Error: {err}");
90+
error!("{err}");
8691
exit(EXIT_REGISTRY_ERROR);
8792
}
8893
}
8994
},
9095
args::ConfigSubCommand::Delete{input} => {
96+
debug!("Delete input: {input}");
9197
let reg_helper = match RegistryHelper::new(&input) {
9298
Ok(reg_helper) => reg_helper,
9399
Err(err) => {
94-
eprintln!("Error: {err}");
100+
error!("{err}");
95101
exit(EXIT_INVALID_INPUT);
96102
}
97103
};
98104
match reg_helper.remove() {
99105
Ok(()) => {},
100106
Err(err) => {
101-
eprintln!("Error: {err}");
107+
error!("{err}");
102108
exit(EXIT_REGISTRY_ERROR);
103109
}
104110
}
@@ -115,6 +121,24 @@ fn main() {
115121
exit(EXIT_SUCCESS);
116122
}
117123

124+
pub fn enable_tracing() {
125+
// default filter to trace level
126+
let filter = EnvFilter::builder().with_default_directive(LevelFilter::TRACE.into()).parse("").unwrap_or_default();
127+
let layer = tracing_subscriber::fmt::Layer::default().with_writer(std::io::stderr);
128+
let fmt = layer
129+
.with_ansi(false)
130+
.with_level(true)
131+
.with_line_number(true)
132+
.json()
133+
.boxed();
134+
135+
let subscriber = tracing_subscriber::Registry::default().with(fmt).with(filter);
136+
137+
if tracing::subscriber::set_global_default(subscriber).is_err() {
138+
eprintln!("Unable to set global default tracing subscriber. Tracing is diabled.");
139+
}
140+
}
141+
118142
#[cfg(debug_assertions)]
119143
fn check_debug() {
120144
if env::var("DEBUG_REGISTRY").is_ok() {

0 commit comments

Comments
 (0)