diff --git a/config.toml b/config.toml index 5b4e1d3..e73bb42 100644 --- a/config.toml +++ b/config.toml @@ -1,6 +1,10 @@ port = 1965 # use "::" for ipv6 and ipv4 or "0.0.0.0" for ipv4 only host = "::" +# log is optional and server wide. It defaults to info if not set. Other levels +# are error, warn, and info. If error is set it will only show error. If warn +# is set it will show error and warn. Info shows all three. +log = "info" # There must be at least 1 server tag if a client doesn't send sni the server # will use this tag as its default. diff --git a/src/config.rs b/src/config.rs index 3ded2f3..f3a2658 100644 --- a/src/config.rs +++ b/src/config.rs @@ -8,6 +8,7 @@ use toml::de::Error; pub struct Config { pub port: u16, pub host: String, + pub log: Option, pub server: Vec, } diff --git a/src/main.rs b/src/main.rs index 8b3499c..1f0abb9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -300,7 +300,6 @@ async fn handle_connection( } fn main() -> io::Result<()> { - simple_logger::init_with_level(log::Level::Info).unwrap(); let args: Vec = env::args().collect(); if args.len() != 2 { println!("Please run with the path to the config file."); @@ -319,6 +318,21 @@ fn main() -> io::Result<()> { return Ok(()); }, }; + let loglev = match &cfg.log { + None => log::Level::Info, + Some(l) => { + match l.as_str() { + "error" => log::Level::Error, + "warn" => log::Level::Warn, + "info" => log::Level::Info, + _ => { + eprintln!("Incorrect log level in config file."); + return Ok(()); + }, + } + }, + }; + simple_logger::init_with_level(loglev).unwrap(); let cmap = cfg.to_map(); let default = &cfg.server[0].hostname; println!("Serving {} vhosts", cfg.server.len());