cleanup transition to tracing

This commit is contained in:
Benjamin Fry 2022-05-02 18:39:53 -07:00
parent 6f6c965873
commit 03d10d312d
30 changed files with 196 additions and 236 deletions

116
Cargo.lock generated
View File

@ -310,18 +310,6 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"winapi",
]
[[package]]
name = "clap"
version = "3.1.2"
@ -442,19 +430,6 @@ dependencies = [
"syn",
]
[[package]]
name = "env_logger"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
dependencies = [
"atty",
"humantime",
"log",
"regex",
"termcolor",
]
[[package]]
name = "event-listener"
version = "2.5.1"
@ -733,15 +708,9 @@ checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11"
dependencies = [
"bytes",
"fnv",
"itoa 0.4.7",
"itoa",
]
[[package]]
name = "humantime"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "idna"
version = "0.2.3"
@ -796,12 +765,6 @@ version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
[[package]]
name = "itoa"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
[[package]]
name = "js-sys"
version = "0.3.52"
@ -885,9 +848,9 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
[[package]]
name = "matchers"
version = "0.0.1"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1"
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
dependencies = [
"regex-automata",
]
@ -972,25 +935,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "num-integer"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
"autocfg",
]
[[package]]
name = "num_cpus"
version = "1.13.0"
@ -1427,12 +1371,6 @@ dependencies = [
"base64",
]
[[package]]
name = "ryu"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
[[package]]
name = "schannel"
version = "0.1.19"
@ -1502,17 +1440,6 @@ dependencies = [
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95"
dependencies = [
"itoa 1.0.1",
"ryu",
"serde",
]
[[package]]
name = "sharded-slab"
version = "0.1.4"
@ -1660,7 +1587,7 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99beeb0daeac2bd1e86ac2c21caddecb244b39a093594da1a661ec2060c7aedd"
dependencies = [
"itoa 0.4.7",
"itoa",
"libc",
"time-macros",
]
@ -1795,54 +1722,41 @@ dependencies = [
[[package]]
name = "tracing-core"
version = "0.1.18"
version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052"
checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f"
dependencies = [
"lazy_static",
"valuable",
]
[[package]]
name = "tracing-log"
version = "0.1.2"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3"
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
dependencies = [
"lazy_static",
"log",
"tracing-core",
]
[[package]]
name = "tracing-serde"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b"
dependencies = [
"serde",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.2.20"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9cbe87a2fa7e35900ce5de20220a582a9483a7063811defce79d7cbd59d4cfe"
checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596"
dependencies = [
"ansi_term",
"chrono",
"lazy_static",
"matchers",
"regex",
"serde",
"serde_json",
"sharded-slab",
"smallvec",
"thread_local",
"tracing",
"tracing-core",
"tracing-log",
"tracing-serde",
]
[[package]]
@ -1850,7 +1764,6 @@ name = "trust-dns"
version = "0.21.2"
dependencies = [
"clap",
"env_logger",
"futures",
"native-tls",
"regex",
@ -2031,7 +1944,6 @@ dependencies = [
"clap",
"console",
"data-encoding",
"log",
"openssl",
"rustls",
"tokio",
@ -2093,6 +2005,12 @@ dependencies = [
"serde",
]
[[package]]
name = "valuable"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "value-bag"
version = "1.0.0-alpha.7"

View File

@ -74,12 +74,11 @@ path = "src/named.rs"
[dependencies]
clap = { version = "3.0", default-features = false, features = ["std", "cargo"] }
env_logger = "0.9"
futures = { version = "0.3.5", default-features = false, features = ["std"] }
rustls = { version = "0.20", optional = true }
time = "0.3"
tracing = "0.1"
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
tokio = { version = "1.0", features = ["time"] }
trust-dns-client = { version = "0.21.1", path = "../crates/client" }
trust-dns-proto = { version = "0.21.1", path = "../crates/proto" }

View File

@ -39,23 +39,26 @@
extern crate clap;
use std::{
env,
fmt::Display,
io::{self, Write},
env, fmt,
net::{IpAddr, Ipv4Addr, SocketAddr, ToSocketAddrs},
path::{Path, PathBuf},
sync::Arc,
};
use clap::{Arg, ArgMatches};
use env_logger::fmt::Formatter;
use time::OffsetDateTime;
use tokio::{
net::{TcpListener, UdpSocket},
runtime,
};
use tracing::{debug, error, info, warn, Event, Subscriber};
use tracing_subscriber::{
fmt::{format, FmtContext, FormatEvent, FormatFields, FormattedFields},
layer::SubscriberExt,
registry::LookupSpan,
util::SubscriberInitExt,
};
use tracing::{debug, error, info};
use trust_dns_client::rr::Name;
#[cfg(feature = "dns-over-tls")]
use trust_dns_server::config::dnssec::{self, TlsCertConfig};
@ -152,9 +155,7 @@ async fn load_zone(
let is_dnssec_enabled = zone_config.is_dnssec_enabled();
if zone_config.is_update_allowed() {
tracing::warn!(
"allow_update is deprecated in [[zones]] section, it belongs in [[zones.stores]]"
);
warn!("allow_update is deprecated in [[zones]] section, it belongs in [[zones.stores]]");
}
// load the zone
@ -162,9 +163,7 @@ async fn load_zone(
#[cfg(feature = "sqlite")]
Some(StoreConfig::Sqlite(ref config)) => {
if zone_path.is_some() {
tracing::warn!(
"ignoring [[zones.file]] instead using [[zones.stores.zone_file_path]]"
);
warn!("ignoring [[zones.file]] instead using [[zones.stores.zone_file_path]]");
}
let mut authority = SqliteAuthority::try_from_config(
@ -183,9 +182,7 @@ async fn load_zone(
}
Some(StoreConfig::File(ref config)) => {
if zone_path.is_some() {
tracing::warn!(
"ignoring [[zones.file]] instead using [[zones.stores.zone_file_path]]"
);
warn!("ignoring [[zones.file]] instead using [[zones.stores.zone_file_path]]");
}
let mut authority = FileAuthority::try_from_config(
@ -209,7 +206,7 @@ async fn load_zone(
}
#[cfg(feature = "sqlite")]
None if zone_config.is_update_allowed() => {
tracing::warn!(
warn!(
"using deprecated SQLite load configuration, please move to [[zones.stores]] form"
);
let zone_file_path = zone_path.ok_or("file is a necessary parameter of zone_config")?;
@ -579,9 +576,7 @@ fn config_tls(
.collect();
if tls_sockaddrs.is_empty() {
tracing::warn!(
"a tls certificate was specified, but no TLS addresses configured to listen on"
);
warn!("a tls certificate was specified, but no TLS addresses configured to listen on");
}
for tls_listener in &tls_sockaddrs {
@ -634,9 +629,7 @@ fn config_https(
.collect();
if https_sockaddrs.is_empty() {
tracing::warn!(
"a tls certificate was specified, but no HTTPS addresses configured to listen on"
);
warn!("a tls certificate was specified, but no HTTPS addresses configured to listen on");
}
for https_listener in &https_sockaddrs {
@ -743,80 +736,100 @@ fn banner() {
info!("");
}
fn format<L, M, LN, A>(
fmt: &mut Formatter,
level: L,
module: M,
line: LN,
args: A,
) -> io::Result<()>
where
L: Display,
M: Display,
LN: Display,
A: Display,
{
let now = OffsetDateTime::now_utc();
let now_secs = now.unix_timestamp();
writeln!(fmt, "{}:{}:{}:{}:{}", now_secs, level, module, line, args)
}
struct TdnsFormatter;
fn plain_formatter(fmt: &mut Formatter, record: &log::Record<'_>) -> io::Result<()> {
format(
fmt,
record.level(),
record.module_path().unwrap_or("None"),
record.line().unwrap_or(0),
record.args(),
)
impl<S, N> FormatEvent<S, N> for TdnsFormatter
where
S: Subscriber + for<'a> LookupSpan<'a>,
N: for<'a> FormatFields<'a> + 'static,
{
fn format_event(
&self,
ctx: &FmtContext<'_, S, N>,
mut writer: format::Writer<'_>,
event: &Event<'_>,
) -> fmt::Result {
let now = OffsetDateTime::now_utc();
let now_secs = now.unix_timestamp();
// Format values from the event's's metadata:
let metadata = event.metadata();
write!(
&mut writer,
"{}:{}:{}",
now_secs,
metadata.level(),
metadata.target()
)?;
if let Some(line) = metadata.line() {
write!(&mut writer, ":{}", line)?;
}
// Format all the spans in the event's span context.
if let Some(scope) = ctx.event_scope() {
for span in scope.from_root() {
write!(writer, ":{}", span.name())?;
let ext = span.extensions();
let fields = &ext
.get::<FormattedFields<N>>()
.expect("will never be `None`");
// Skip formatting the fields if the span had no fields.
if !fields.is_empty() {
write!(writer, "{{{}}}", fields)?;
}
}
}
// Write fields on the event
write!(writer, ":")?;
ctx.field_format().format_fields(writer.by_ref(), event)?;
writeln!(writer)
}
}
fn get_env() -> String {
env::var("RUST_LOG").unwrap_or_default()
}
fn all_trust_dns(level: &str) -> String {
fn all_trust_dns(level: impl ToString) -> String {
format!(
",named={level},trust_dns_client={level},trust_dns_server={level},trust_dns_proto={level},trust_dns_resolver={level},trust_dns_https={level}",
level = level
"named={level},trust_dns_client={level},trust_dns_server={level},trust_dns_proto={level},trust_dns_resolver={level},{env}",
level = level.to_string().to_lowercase(),
env = get_env()
)
}
/// appends trust-dns-server debug to RUST_LOG
pub fn debug() {
let mut rust_log = get_env();
rust_log.push_str(&all_trust_dns("debug"));
logger(&rust_log);
logger(tracing::Level::DEBUG);
}
/// appends trust-dns-server info to RUST_LOG
pub fn default() {
let mut rust_log = get_env();
rust_log.push_str(&all_trust_dns("info"));
logger(&rust_log);
logger(tracing::Level::INFO);
}
/// appends trust-dns-server error to RUST_LOG
pub fn quiet() {
let mut rust_log = get_env();
rust_log.push_str(&all_trust_dns("error"));
logger(&rust_log);
logger(tracing::Level::ERROR);
}
/// only uses the RUST_LOG environment variable.
pub fn env() {
let rust_log = get_env();
logger(&rust_log);
}
/// see env_logger docs
fn logger(config: &str) {
let mut builder = env_logger::Builder::new();
let log_formatter = plain_formatter;
builder.format(log_formatter);
builder.parse_filters(config);
builder.target(env_logger::Target::Stdout);
builder.init();
// TODO: add dep on util crate, share logging config...
fn logger(level: tracing::Level) {
// Setup tracing for logging based on input
let subscriber = tracing_subscriber::EnvFilter::builder()
.with_default_directive(tracing::Level::WARN.into())
.parse(all_trust_dns(level))
.expect("failed to configure tracing/logging");
let formatter = tracing_subscriber::fmt::layer().event_format(TdnsFormatter);
tracing_subscriber::registry()
.with(formatter)
.with(subscriber)
.init();
}

View File

@ -11,9 +11,6 @@
// TODO: enable this test for rustls as well using below config
// #![cfg(feature = "dns-over-tls")]
#[macro_use]
extern crate log;
mod server_harness;
use std::env;

View File

@ -8,9 +8,6 @@
#![cfg(not(windows))]
#![cfg(feature = "dns-over-quic")]
#[macro_use]
extern crate log;
mod server_harness;
use std::{env, fs::File, io::*, net::*};

View File

@ -14,7 +14,7 @@ use std::time::*;
use regex::Regex;
use tokio::runtime::Runtime;
use tracing::info;
use tracing::{info, warn};
use trust_dns_client::client::*;
use trust_dns_client::proto::xfer::DnsResponse;
use trust_dns_client::rr::*;
@ -84,7 +84,7 @@ where
let mut named = named_killer.lock().unwrap();
if let Err(e) = named.kill() {
tracing::warn!("warning: failed to kill named: {:?}", e);
warn!("warning: failed to kill named: {:?}", e);
}
};

View File

@ -91,7 +91,7 @@ webpki = { version = "0.22.0", optional = true }
futures = { version = "0.3.5", default-features = false, features = ["std", "executor"] }
openssl = { version = "0.10", features = ["v102", "v110"], optional = false }
tokio = { version = "1.0", features = ["rt", "macros"] }
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
[package.metadata.docs.rs]
all-features = true

View File

@ -13,8 +13,8 @@ use std::time::Duration;
use futures_util::ready;
use futures_util::stream::{Stream, StreamExt};
use tracing::debug;
use rand;
use tracing::debug;
use trust_dns_proto::op::Edns;
use crate::client::Signer;

View File

@ -111,7 +111,7 @@ webpki-roots = { version = "0.22.1", optional = true }
futures-executor = { version = "0.3.5", default-features = false, features = ["std"] }
openssl = { version = "0.10", features = ["v102", "v110"] }
tokio = { version = "1.0", features = ["rt", "time", "macros"] }
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
[package.metadata.docs.rs]
all-features = true

View File

@ -22,11 +22,11 @@ use futures_util::ready;
use futures_util::stream::Stream;
use h2::client::{Connection, SendRequest};
use http::header::{self, CONTENT_LENGTH};
use tracing::{debug, warn};
use rustls::ClientConfig;
use tokio_rustls::{
client::TlsStream as TokioTlsClientStream, Connect as TokioTlsConnect, TlsConnector,
};
use tracing::{debug, warn};
use crate::error::ProtoError;
use crate::iocompat::AsyncIoStdAsTokio;

View File

@ -15,11 +15,11 @@ use std::task::{Context, Poll};
use futures_util::stream::{Stream, StreamExt};
use futures_util::{future, future::Future, ready, FutureExt, TryFutureExt};
use lazy_static::lazy_static;
use tracing::{debug, trace};
use rand;
use rand::distributions::{uniform::Uniform, Distribution};
use socket2::{self, Socket};
use tokio::net::UdpSocket;
use tracing::{debug, trace};
use crate::multicast::MdnsQueryType;
use crate::udp::UdpStream;

View File

@ -8,8 +8,8 @@
use std::convert::{TryFrom, TryInto};
use bytes::{Bytes, BytesMut};
use log::debug;
use quinn::{RecvStream, SendStream, VarInt};
use tracing::debug;
use crate::{
error::{ProtoError, ProtoErrorKind},

View File

@ -14,9 +14,9 @@ use std::task::{Context, Poll};
use async_trait::async_trait;
use futures_util::stream::Stream;
use futures_util::{future::Future, ready, TryFutureExt};
use tracing::debug;
use rand;
use rand::distributions::{uniform::Uniform, Distribution};
use tracing::{debug, warn};
use crate::xfer::{BufDnsStreamHandle, SerialMessage, StreamReceiver};
use crate::Time;
@ -172,10 +172,9 @@ impl<S: UdpSocket + Send + 'static> Stream for UdpStream<S> {
// TODO: shouldn't this return the error to send to the sender?
if let Err(e) = ready!(socket.poll_send_to(cx, message.bytes(), addr)) {
// Drop the UDP packet and continue
log::warn!(
warn!(
"error sending message to {} on udp_socket, dropping response: {}",
addr,
e
addr, e
);
}

View File

@ -9,8 +9,8 @@
use std::error::Error;
use futures_util::stream::Stream;
use tracing::debug;
use rand;
use tracing::debug;
use crate::op::{Message, MessageType, OpCode, Query};
use crate::xfer::{DnsRequest, DnsRequestOptions, DnsResponse, SerialMessage};

View File

@ -20,9 +20,9 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH};
use futures_channel::mpsc;
use futures_util::stream::{Stream, StreamExt};
use futures_util::{future::Future, ready, FutureExt};
use tracing::{debug, warn};
use rand;
use rand::distributions::{Distribution, Standard};
use tracing::{debug, warn};
use crate::error::*;
use crate::op::{MessageFinalizer, MessageVerifier};

View File

@ -94,7 +94,7 @@ trust-dns-resolver = { version = "0.21.1-alpha.5", path = "../resolver", feature
[dev-dependencies]
tokio = { version="1.0", features = ["macros", "rt"] }
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
[package.metadata.docs.rs]
all-features = true

View File

@ -92,7 +92,7 @@ ipconfig = { version = "0.3.0", optional = true }
[dev-dependencies]
futures-executor = { version = "0.3.5", default-features = false, features = ["std"] }
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
[package.metadata.docs.rs]
all-features = true

View File

@ -100,7 +100,7 @@ trust-dns-resolver = { version = "0.21.1", path = "../resolver", features = ["se
[dev-dependencies]
tokio = { version="1.0", features = ["macros", "rt"] }
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
[package.metadata.docs.rs]
all-features = true

View File

@ -10,8 +10,8 @@ use std::{io, net::SocketAddr, sync::Arc};
use bytes::{Bytes, BytesMut};
use futures_util::lock::Mutex;
use h2::server;
use tracing::{debug, warn};
use tokio::io::{AsyncRead, AsyncWrite};
use tracing::{debug, warn};
use trust_dns_proto::rr::Record;
use crate::{

View File

@ -9,7 +9,7 @@ use std::{io, net::SocketAddr, sync::Arc};
use bytes::{Bytes, BytesMut};
use futures_util::lock::Mutex;
use log::{debug, warn};
use tracing::{debug, warn};
use trust_dns_proto::{
error::ProtoError,
quic::{DoqErrorCode, QuicStream},

View File

@ -6,8 +6,8 @@ use std::time::Duration;
use futures_util::stream::{Stream, StreamExt};
use futures_util::FutureExt;
use tracing::{debug, warn};
use tokio::time::Sleep;
use tracing::{debug, warn};
/// This wraps the underlying Stream in a timeout.
///

View File

@ -11,10 +11,10 @@ use std::iter::Iterator;
use std::path::Path;
use std::sync::{Mutex, MutexGuard};
use tracing::error;
use rusqlite::types::ToSql;
use rusqlite::{self, Connection};
use time;
use tracing::error;
use crate::error::{PersistenceErrorKind, PersistenceResult};
use crate::proto::rr::Record;

View File

@ -78,9 +78,9 @@ rand = "0.8"
rusqlite = { version = "0.27.0", features = ["bundled"], optional = true }
rustls = "0.20"
time = "0.3"
tracing = "0.1"
tracing-subscriber = "0.2"
tokio = { version = "1.0", features = ["time", "rt"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
trust-dns-client= { version = "0.21.1", path = "../../crates/client" }
trust-dns-proto = { version = "0.21.1", path = "../../crates/proto", features = ["testing"] }
trust-dns-resolver = { version = "0.21.1", path = "../../crates/resolver" }

View File

@ -73,11 +73,10 @@ path = "src/resolve.rs"
clap = { version = "3.1", default-features = false, features = ["std", "cargo", "derive", "color", "suggestions"] }
console = "0.15.0"
data-encoding = "2.2.0"
log = "0.4"
openssl = { version = "0.10", features = ["v102", "v110"], optional = true }
rustls = { version = "0.20.0", features = ["dangerous_configuration"], optional = true }
tracing = "0.1"
tracing-subscriber = "0.2"
tracing-subscriber = { version = "0.3", features = ["std", "fmt", "env-filter"] }
trust-dns-client = { version = "0.21.1", path = "../crates/client" }
trust-dns-proto = { version = "0.21.1", path = "../crates/proto" }
trust-dns-resolver = { version = "0.21.1", path = "../crates/resolver" }

View File

@ -29,6 +29,7 @@ use clap::{Arg, ArgMatches, Command};
use data_encoding::BASE64;
use openssl::bn::BigNum;
use openssl::rsa::Rsa;
use tracing::{info, warn, Level};
use trust_dns_client::rr::dnssec::Algorithm;
@ -58,15 +59,14 @@ fn args() -> ArgMatches {
/// Run the bind_dnskey_to_pem program
pub fn main() {
let subscriber = tracing_subscriber::FmtSubscriber::builder().finish();
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
trust_dns_util::logger(env!("CARGO_BIN_NAME"), Some(Level::INFO));
let matches = args();
let key_path = matches.value_of("key").unwrap();
let output_path = matches.value_of("output").unwrap();
log::info!("Reading private key: {}", key_path);
tracing::info!("Reading private key: {}", key_path);
let key_file = File::open(key_path).expect("private key file could not be opened");
@ -83,7 +83,7 @@ pub fn main() {
panic!("Private-key-format line not found: {}", next_line);
}
if "v1.2" != value {
println!("WARNING: un-tested version {:?}", value);
warn!("WARNING: un-tested version {:?}", value);
}
// algorithm
@ -111,7 +111,7 @@ pub fn main() {
_ => panic!("Algorithm currently not supported: {:?}", algorithm),
};
log::info!("Writing private key to pem: {}", output_path);
info!("Writing private key to pem: {}", output_path);
let mut file = OpenOptions::new()
.create_new(true)
.write(true)

View File

@ -25,7 +25,6 @@ use std::net::SocketAddr;
use std::{sync::Arc, time::SystemTime};
use clap::{ArgEnum, Args, Parser, Subcommand};
use log::warn;
#[cfg(feature = "dns-over-rustls")]
use rustls::{
client::{HandshakeSignatureValid, ServerCertVerified},
@ -33,6 +32,7 @@ use rustls::{
Certificate, ClientConfig, OwnedTrustAnchor, RootCertStore,
};
use tokio::net::{TcpStream as TokioTcpStream, UdpSocket};
use tracing::Level;
use trust_dns_client::{
client::{AsyncClient, ClientHandle},
@ -219,25 +219,18 @@ pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
// enable logging early
let log_level = if opts.debug {
log::LevelFilter::Debug
Some(Level::DEBUG)
} else if opts.info {
log::LevelFilter::Info
Some(Level::INFO)
} else if opts.warn {
log::LevelFilter::Warn
Some(Level::WARN)
} else if opts.error {
log::LevelFilter::Error
Some(Level::ERROR)
} else {
log::LevelFilter::Off
None
};
// Get query term
env_logger::builder()
.filter_module("trust_dns_resolver", log_level)
.filter_module("trust_dns_proto", log_level)
.filter_module("trust_dns_client", log_level)
.write_style(env_logger::WriteStyle::Auto)
.format_indent(Some(4))
.init();
trust_dns_util::logger(env!("CARGO_BIN_NAME"), log_level);
// TODO: need to cleanup all of ClientHandle and the Client in general to make it dynamically usable.
match opts.protocol {

View File

@ -39,8 +39,7 @@ fn args() -> ArgMatches {
/// Run the get_root_ksks program
pub fn main() {
let subscriber = tracing_subscriber::FmtSubscriber::builder().finish();
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
trust_dns_util::logger(env!("CARGO_BIN_NAME"), Some(tracing::Level::INFO));
let _matches = args();

53
util/src/lib.rs Normal file
View File

@ -0,0 +1,53 @@
// Copyright 2015-2022 Benjamin Fry <benjaminfry@me.com>
//
// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
// http://opensource.org/licenses/MIT>, at your option. This file may not be
// copied, modified, or distributed except according to those terms.
use std::env;
use tracing::metadata::LevelFilter;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
fn get_env() -> String {
env::var("RUST_LOG").unwrap_or_default()
}
fn get_levels<T: ToString>(bin: &str, level: Option<T>) -> String {
let trust_dns_crates = level.map(|level| format!(
"{bin}={level},trust_dns_util={level},trust_dns_client={level},trust_dns_server={level},trust_dns_proto={level},trust_dns_resolver={level}",
bin = bin,
level = level.to_string().to_lowercase(),
));
if let Some(trust_dns_crates) = trust_dns_crates {
format!(
"{trust_dns_crates},{env}",
trust_dns_crates = trust_dns_crates,
env = get_env()
)
} else {
get_env()
}
}
/// Setup the logging for the given Level of output and all trust-dns crates
///
/// # Panic
///
/// This will panic if the tracing subscriber can't be registered
pub fn logger(bin: &str, level: Option<tracing::Level>) {
// Setup tracing for logging based on input
let subscriber = EnvFilter::builder()
.with_default_directive(LevelFilter::OFF.into())
.parse(get_levels(bin, level))
.expect("failed to configure tracing/logging");
let formatter = tracing_subscriber::fmt::layer().compact();
tracing_subscriber::registry()
.with(formatter)
.with(subscriber)
.init();
}

View File

@ -57,8 +57,7 @@ fn args() -> ArgMatches {
/// Run the pem_to_public_dnskey program
pub fn main() {
let subscriber = tracing_subscriber::FmtSubscriber::builder().finish();
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
trust_dns_util::logger(env!("CARGO_BIN_NAME"), Some(tracing::Level::INFO));
let matches = args();

View File

@ -134,13 +134,7 @@ pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
None
};
if let Some(log_level) = log_level {
let subscriber = tracing_subscriber::FmtSubscriber::builder()
.with_max_level(log_level)
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
}
trust_dns_util::logger(env!("CARGO_BIN_NAME"), log_level);
// read system configuration
let (sys_config, sys_options): (Option<ResolverConfig>, Option<ResolverOpts>) = if opts.system {