Added ability to configure log level.
This commit is contained in:
parent
219c1732fe
commit
f356201323
|
@ -40,6 +40,7 @@ pub struct Configuration {
|
||||||
mode: TrackerMode,
|
mode: TrackerMode,
|
||||||
udp: UDPConfig,
|
udp: UDPConfig,
|
||||||
http: Option<HTTPConfig>,
|
http: Option<HTTPConfig>,
|
||||||
|
log_level: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -83,6 +84,10 @@ impl Configuration {
|
||||||
&self.udp
|
&self.udp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_log_level(&self) -> &Option<String> {
|
||||||
|
&self.log_level
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_http_config(&self) -> &Option<HTTPConfig> {
|
pub fn get_http_config(&self) -> &Option<HTTPConfig> {
|
||||||
&self.http
|
&self.http
|
||||||
}
|
}
|
||||||
|
@ -91,6 +96,7 @@ impl Configuration {
|
||||||
impl Default for Configuration {
|
impl Default for Configuration {
|
||||||
fn default() -> Configuration {
|
fn default() -> Configuration {
|
||||||
Configuration{
|
Configuration{
|
||||||
|
log_level: None,
|
||||||
mode: TrackerMode::DynamicMode,
|
mode: TrackerMode::DynamicMode,
|
||||||
udp: UDPConfig{
|
udp: UDPConfig{
|
||||||
announce_interval: 120,
|
announce_interval: 120,
|
||||||
|
|
26
src/main.rs
26
src/main.rs
|
@ -15,10 +15,31 @@ mod server;
|
||||||
mod tracker;
|
mod tracker;
|
||||||
mod stackvec;
|
mod stackvec;
|
||||||
mod webserver;
|
mod webserver;
|
||||||
|
mod service;
|
||||||
mod config;
|
mod config;
|
||||||
|
|
||||||
|
use std::process::exit;
|
||||||
use config::Configuration;
|
use config::Configuration;
|
||||||
|
|
||||||
fn setup_logging(cfg: &Configuration) {
|
fn setup_logging(cfg: &Configuration) {
|
||||||
|
let log_level = match cfg.get_log_level() {
|
||||||
|
None => log::LevelFilter::Info,
|
||||||
|
Some(level) => {
|
||||||
|
match level.as_str() {
|
||||||
|
"off" => log::LevelFilter::Off,
|
||||||
|
"trace" => log::LevelFilter::Trace,
|
||||||
|
"debug" => log::LevelFilter::Debug,
|
||||||
|
"info" => log::LevelFilter::Info,
|
||||||
|
"warn" => log::LevelFilter::Warn,
|
||||||
|
"error" => log::LevelFilter::Error,
|
||||||
|
_ => {
|
||||||
|
eprintln!("udpt: unknown log level encountered '{}'", level.as_str());
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if let Err(err) = fern::Dispatch::new()
|
if let Err(err) = fern::Dispatch::new()
|
||||||
.format(|out, message, record| {
|
.format(|out, message, record| {
|
||||||
out.finish(
|
out.finish(
|
||||||
|
@ -31,7 +52,7 @@ fn setup_logging(cfg: &Configuration) {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.level(log::LevelFilter::Trace)
|
.level(log_level)
|
||||||
.chain(std::io::stdout())
|
.chain(std::io::stdout())
|
||||||
.apply() {
|
.apply() {
|
||||||
eprintln!("udpt: failed to initialize logging. {}", err);
|
eprintln!("udpt: failed to initialize logging. {}", err);
|
||||||
|
@ -75,7 +96,8 @@ fn main() {
|
||||||
trace!("Waiting for UDP packets");
|
trace!("Waiting for UDP packets");
|
||||||
let logical_cpus = num_cpus::get();
|
let logical_cpus = num_cpus::get();
|
||||||
let mut threads = Vec::with_capacity(logical_cpus);
|
let mut threads = Vec::with_capacity(logical_cpus);
|
||||||
for _ in 0..logical_cpus {
|
for i in 0..logical_cpus {
|
||||||
|
debug!("starting thread {}/{}", i+1, logical_cpus);
|
||||||
let server_handle = udp_server.clone();
|
let server_handle = udp_server.clone();
|
||||||
threads.push(std::thread::spawn(move || {
|
threads.push(std::thread::spawn(move || {
|
||||||
loop {
|
loop {
|
||||||
|
|
Loading…
Reference in a new issue