diff --git a/Cargo.lock b/Cargo.lock index 1aa969a..c52af78 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -145,6 +145,7 @@ dependencies = [ "hashbrown 0.8.2", "histogram", "indexmap", + "log", "mimalloc", "mio", "parking_lot", diff --git a/aquatic_udp/Cargo.toml b/aquatic_udp/Cargo.toml index 08baa1b..200f9bd 100644 --- a/aquatic_udp/Cargo.toml +++ b/aquatic_udp/Cargo.toml @@ -21,6 +21,7 @@ crossbeam-channel = "0.4" hashbrown = "0.8" histogram = "0.6" indexmap = "1" +log = "0.4" mimalloc = { version = "0.1", default-features = false } mio = { version = "0.7", features = ["udp", "os-poll", "os-util"] } parking_lot = "0.11" diff --git a/aquatic_udp/src/lib/config.rs b/aquatic_udp/src/lib/config.rs index ba451be..ee05387 100644 --- a/aquatic_udp/src/lib/config.rs +++ b/aquatic_udp/src/lib/config.rs @@ -2,6 +2,8 @@ use std::net::SocketAddr; use serde::{Serialize, Deserialize}; +use aquatic_cli_helpers::LogLevel; + #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(default)] @@ -13,6 +15,7 @@ pub struct Config { /// Request workers receive a number of requests from socket workers, /// generate responses and send them back to the socket workers. pub request_workers: usize, + pub log_level: LogLevel, pub network: NetworkConfig, pub protocol: ProtocolConfig, pub handlers: HandlerConfig, @@ -22,7 +25,11 @@ pub struct Config { } -impl aquatic_cli_helpers::Config for Config {} +impl aquatic_cli_helpers::Config for Config { + fn get_log_level(&self) -> Option { + Some(self.log_level) + } +} #[derive(Clone, Debug, Serialize, Deserialize)] @@ -108,6 +115,7 @@ impl Default for Config { Self { socket_workers: 1, request_workers: 1, + log_level: LogLevel::Error, network: NetworkConfig::default(), protocol: ProtocolConfig::default(), handlers: HandlerConfig::default(), diff --git a/aquatic_udp/src/lib/handlers.rs b/aquatic_udp/src/lib/handlers.rs index 6566d73..3821929 100644 --- a/aquatic_udp/src/lib/handlers.rs +++ b/aquatic_udp/src/lib/handlers.rs @@ -147,7 +147,7 @@ pub fn run_request_worker( for r in responses.drain(..){ if let Err(err) = response_sender.send(r){ - eprintln!("error sending response to channel: {}", err); + ::log::error!("error sending response to channel: {}", err); } } } diff --git a/aquatic_udp/src/lib/network.rs b/aquatic_udp/src/lib/network.rs index d5c0983..2c2dfda 100644 --- a/aquatic_udp/src/lib/network.rs +++ b/aquatic_udp/src/lib/network.rs @@ -62,7 +62,7 @@ pub fn run_socket_worker( for r in requests.drain(..){ if let Err(err) = request_sender.send(r){ - eprintln!("error sending to request_sender: {}", err); + ::log::error!("error sending to request_sender: {}", err); } } @@ -103,7 +103,7 @@ fn create_socket(config: &Config) -> ::std::net::UdpSocket { if recv_buffer_size != 0 { if let Err(err) = socket.set_recv_buffer_size(recv_buffer_size){ - eprintln!( + ::log::error!( "socket: failed setting recv buffer to {}: {:?}", recv_buffer_size, err @@ -146,7 +146,7 @@ fn read_requests( requests.push((request, src)); }, Err(err) => { - eprintln!("request_from_bytes error: {:?}", err); + ::log::debug!("request_from_bytes error: {:?}", err); if let Some(transaction_id) = err.transaction_id { let opt_message = if err.error.is_some() { @@ -174,7 +174,7 @@ fn read_requests( break; } - eprintln!("recv_from error: {}", err); + ::log::info!("recv_from error: {}", err); } } } @@ -225,7 +225,7 @@ fn send_responses( break; } - eprintln!("send_to error: {}", err); + ::log::info!("send_to error: {}", err); } } } diff --git a/aquatic_udp/src/lib/tasks.rs b/aquatic_udp/src/lib/tasks.rs index 09472fe..f0b16e0 100644 --- a/aquatic_udp/src/lib/tasks.rs +++ b/aquatic_udp/src/lib/tasks.rs @@ -108,14 +108,14 @@ pub fn gather_and_print_statistics( let num_peers = (torrent.num_seeders + torrent.num_leechers) as u64; if let Err(err) = peers_per_torrent.increment(num_peers){ - eprintln!("error incrementing peers_per_torrent histogram: {}", err) + ::log::error!("error incrementing peers_per_torrent histogram: {}", err) } } for torrent in torrents.ipv6.values(){ let num_peers = (torrent.num_seeders + torrent.num_leechers) as u64; if let Err(err) = peers_per_torrent.increment(num_peers){ - eprintln!("error incrementing peers_per_torrent histogram: {}", err) + ::log::error!("error incrementing peers_per_torrent histogram: {}", err) } } }