cleanup transition to tracing
This commit is contained in:
parent
6f6c965873
commit
03d10d312d
116
Cargo.lock
generated
116
Cargo.lock
generated
@ -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"
|
||||
|
@ -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" }
|
||||
|
161
bin/src/named.rs
161
bin/src/named.rs
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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::*};
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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},
|
||||
|
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -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};
|
||||
|
@ -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};
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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::{
|
||||
|
@ -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},
|
||||
|
@ -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.
|
||||
///
|
||||
|
@ -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;
|
||||
|
@ -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" }
|
||||
|
@ -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" }
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
|
@ -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
53
util/src/lib.rs
Normal 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();
|
||||
}
|
@ -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();
|
||||
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user