diff --git a/Cargo.lock b/Cargo.lock index 51f4b016e..f40ff72a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1406,6 +1406,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "num-bigint" version = "0.4.8" @@ -1927,7 +1936,6 @@ name = "rustls-examples" version = "0.0.1" dependencies = [ "clap", - "env_logger", "hickory-resolver", "mio", "rcgen", @@ -1937,6 +1945,7 @@ dependencies = [ "serde", "tokio", "tracing", + "tracing-subscriber", "webpki-roots", ] @@ -2137,6 +2146,15 @@ dependencies = [ "zmij", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2285,6 +2303,15 @@ dependencies = [ "syn 3.0.2", ] +[[package]] +name = "thread_local" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" +dependencies = [ + "cfg-if", +] + [[package]] name = "tikv-jemalloc-sys" version = "0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8" @@ -2438,6 +2465,18 @@ dependencies = [ "once_cell", ] +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "thread_local", + "tracing-core", +] + [[package]] name = "unicode-ident" version = "1.0.24" diff --git a/Cargo.toml b/Cargo.toml index 44f04b4e6..9710d9df5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -91,6 +91,7 @@ time = { version = "0.3.6", default-features = false } tikv-jemallocator = "0.7" tokio = { version = "1.34", features = ["io-util", "macros", "net", "rt"] } tracing = { version = "0.1", default-features = false } +tracing-subscriber = { version = "0.3", default-features = false, features = ["ansi", "fmt"] } webpki = { package = "rustls-webpki", version = "=0.104.0-alpha.7", features = [ "alloc", ], default-features = false } diff --git a/examples/Cargo.toml b/examples/Cargo.toml index a36bd12d6..5b0917386 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -8,7 +8,6 @@ publish = false [dependencies] clap = { workspace = true } -env_logger = { workspace = true } hickory-resolver = { workspace = true } mio = { workspace = true } rcgen = { workspace = true } @@ -18,6 +17,7 @@ rustls-util = { path = "../rustls-util" } serde = { workspace = true } tokio = { workspace = true } tracing = { workspace = true } +tracing-subscriber = { workspace = true } webpki-roots = { workspace = true } [lints] diff --git a/examples/src/bin/ech-client.rs b/examples/src/bin/ech-client.rs index e30477784..119a69600 100644 --- a/examples/src/bin/ech-client.rs +++ b/examples/src/bin/ech-client.rs @@ -30,7 +30,7 @@ use core::error::Error; use std::fs; -use std::io::{BufReader, Read, Write, stdout}; +use std::io::{BufReader, IsTerminal, Read, Write, stderr, stdout}; use std::net::{TcpStream, ToSocketAddrs}; use std::sync::Arc; @@ -48,7 +48,7 @@ use rustls::pki_types::{CertificateDer, EchConfigListBytes, ServerName}; use rustls::{ClientConfig, Connection, RootCertStore, VecInput}; use rustls_aws_lc_rs::hpke::ALL_SUPPORTED_SUITES; use rustls_util::{KeyLogFile, Stream}; -use tracing::trace; +use tracing::{Level, trace}; #[tokio::main] async fn main() -> Result<(), Box> { @@ -76,11 +76,13 @@ async fn main() -> Result<(), Box> { } }; - // NOTE: we defer setting up env_logger and setting the trace default filter level until + // NOTE: we defer installing the tracing subscriber (with a `trace` level filter) until // after doing the DNS-over-HTTPS lookup above - we don't want to muddy the output // with the rustls debug logs from the lookup. - env_logger::Builder::new() - .parse_filters("trace") + tracing_subscriber::fmt() + .with_max_level(Level::TRACE) + .with_writer(stderr) + .with_ansi(stderr().is_terminal()) .init(); let ech_mode = match server_ech_configs.is_empty() { diff --git a/examples/src/bin/server_acceptor.rs b/examples/src/bin/server_acceptor.rs index a80f8206b..eaa7f41f8 100644 --- a/examples/src/bin/server_acceptor.rs +++ b/examples/src/bin/server_acceptor.rs @@ -7,7 +7,7 @@ use core::ops::Add; use core::time::Duration; use std::fs::File; -use std::io::{Read, Write}; +use std::io::{IsTerminal, Read, Write, stderr}; use std::path::PathBuf; use std::sync::Arc; use std::{fs, thread}; @@ -20,13 +20,16 @@ use rustls::server::{ClientHello, ServerConfig, ServerHandshake, WebPkiClientVer use rustls::{RootCertStore, VecInput}; use rustls_aws_lc_rs::DEFAULT_PROVIDER; use rustls_util::KeyLogFile; +use tracing::Level; fn main() { let args = Args::parse(); if args.verbose { - env_logger::Builder::new() - .parse_filters("trace") + tracing_subscriber::fmt() + .with_max_level(Level::TRACE) + .with_writer(stderr) + .with_ansi(stderr().is_terminal()) .init(); } diff --git a/examples/src/bin/simple_0rtt_client.rs b/examples/src/bin/simple_0rtt_client.rs index a3c3e3230..21487d630 100644 --- a/examples/src/bin/simple_0rtt_client.rs +++ b/examples/src/bin/simple_0rtt_client.rs @@ -85,7 +85,7 @@ fn start_connection(config: &Arc, domain_name: &str, port: u16) { } fn main() { - env_logger::init(); + tracing_subscriber::fmt::init(); let mut args = env::args(); args.next(); diff --git a/examples/src/bin/tlsclient-mio.rs b/examples/src/bin/tlsclient-mio.rs index 66448735e..ffdc6c661 100644 --- a/examples/src/bin/tlsclient-mio.rs +++ b/examples/src/bin/tlsclient-mio.rs @@ -21,7 +21,7 @@ use core::mem; use std::borrow::Cow; -use std::io::{self, Read, Write}; +use std::io::{self, IsTerminal, Read, Write, stderr}; use std::net::ToSocketAddrs; use std::sync::Arc; use std::{process, str}; @@ -37,6 +37,7 @@ use rustls::pki_types::{CertificateDer, PrivateKeyDer, ServerName}; use rustls::{ClientConfig, ClientConnection, Connection, RootCertStore, VecInput}; use rustls_aws_lc_rs as provider; use rustls_util::KeyLogFile; +use tracing::Level; const CLIENT: mio::Token = mio::Token(0); @@ -548,8 +549,10 @@ fn main() { let args = Args::parse(); if args.verbose { - env_logger::Builder::new() - .parse_filters("trace") + tracing_subscriber::fmt() + .with_max_level(Level::TRACE) + .with_writer(stderr) + .with_ansi(stderr().is_terminal()) .init(); } diff --git a/examples/src/bin/tlsserver-mio.rs b/examples/src/bin/tlsserver-mio.rs index 053d12a70..5c74f00c3 100644 --- a/examples/src/bin/tlsserver-mio.rs +++ b/examples/src/bin/tlsserver-mio.rs @@ -21,7 +21,7 @@ use core::mem; use std::collections::HashMap; -use std::io::{self, Read, Write}; +use std::io::{self, IsTerminal, Read, Write, stderr}; use std::path::{Path, PathBuf}; use std::sync::Arc; use std::{fs, net}; @@ -36,7 +36,7 @@ use rustls::server::{NoServerSessionStorage, WebPkiClientVerifier}; use rustls::{Connection, RootCertStore, ServerConfig, ServerConnection, VecInput}; use rustls_aws_lc_rs as provider; use rustls_util::KeyLogFile; -use tracing::{debug, error}; +use tracing::{Level, debug, error}; // Token for our listening socket. const LISTENER: mio::Token = mio::Token(0); @@ -715,8 +715,10 @@ fn make_config(args: &Args) -> Arc { fn main() { let args = Args::parse(); if args.verbose { - env_logger::Builder::new() - .parse_filters("trace") + tracing_subscriber::fmt() + .with_max_level(Level::TRACE) + .with_writer(stderr) + .with_ansi(stderr().is_terminal()) .init(); }