Skip to content

Commit 6ed026b

Browse files
authored
Merge pull request #12 from PRProd/logging-improvements
improved logging - Added log level argument options
2 parents 77aad9c + f211647 commit 6ed026b

5 files changed

Lines changed: 39 additions & 7 deletions

File tree

12.4 KB
Binary file not shown.
12.8 KB
Binary file not shown.
14.8 KB
Binary file not shown.
18 KB
Binary file not shown.

src/main.rs

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use anyhow::{anyhow, Result};
22
use clap::Parser;
3-
use log::{info, warn};
3+
use clap::ValueEnum;
4+
use log::{info, warn, debug, trace};
45
use reqwest::blocking::Client;
56
use serde::Deserialize;
67
use std::net::IpAddr;
@@ -18,6 +19,9 @@ struct Args {
1819
#[arg(short, long)]
1920
verbose: bool,
2021

22+
#[arg(long, value_enum)]
23+
log_level: Option<LogLevel>,
24+
2125
#[arg(short, long)]
2226
config: Option<String>,
2327

@@ -31,6 +35,15 @@ struct Args {
3135
dry_run: bool,
3236
}
3337

38+
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
39+
enum LogLevel {
40+
Error,
41+
Warn,
42+
Info,
43+
Debug,
44+
Trace,
45+
}
46+
3447
#[derive(Debug, Deserialize)]
3548
struct Record {
3649
record: String,
@@ -52,6 +65,18 @@ struct DreamhostClient {
5265
api_key: String,
5366
}
5467

68+
impl From<LogLevel> for log::LevelFilter {
69+
fn from(level: LogLevel) -> Self {
70+
match level {
71+
LogLevel::Error => log::LevelFilter::Error,
72+
LogLevel::Warn => log::LevelFilter::Warn,
73+
LogLevel::Info => log::LevelFilter::Info,
74+
LogLevel::Debug => log::LevelFilter::Debug,
75+
LogLevel::Trace => log::LevelFilter::Trace,
76+
}
77+
}
78+
}
79+
5580
impl DreamhostClient {
5681
fn call(&self, params: &[(&str, &str)]) -> Result<serde_json::Value> {
5782
let mut query = vec![
@@ -85,6 +110,9 @@ impl DreamhostClient {
85110

86111
let records: Vec<Record> = serde_json::from_value(resp["data"].clone())?;
87112

113+
debug!("All DNS records: {:?}", records);
114+
trace!("Detailed DNS data: {:?}", resp);
115+
88116
records
89117
.into_iter()
90118
.find(|r| r.record == record_name && r.record_type == "A")
@@ -123,13 +151,17 @@ fn main() -> Result<()> {
123151

124152
let args = Args::parse();
125153

126-
if args.verbose {
127-
env_logger::Builder::from_default_env()
128-
.filter_level(log::LevelFilter::Info)
129-
.init();
154+
let level = if let Some(level) = args.log_level {
155+
level.into()
156+
} else if args.verbose {
157+
log::LevelFilter::Info
130158
} else {
131-
env_logger::init();
132-
}
159+
log::LevelFilter::Warn
160+
};
161+
162+
env_logger::Builder::from_default_env()
163+
.filter_level(level)
164+
.init();
133165

134166
let config = resolve_config(&args)?;
135167

0 commit comments

Comments
 (0)