use env_logger instead of fern

This commit is contained in:
Y. T. Chung
2015-12-12 11:05:37 +08:00
parent c5822d9ab5
commit 5cc45827f5
4 changed files with 88 additions and 35 deletions

View File

@@ -69,8 +69,8 @@ byteorder = "^0.3.11"
rand = "^0.3.9"
time = "^0.1.32"
clap = "^1.1.6"
fern = "^0.3.5"
qrcode = "^0.1.6"
env_logger = "^0.3.2"
[dependencies.libsodium-sys]
git = "https://github.com/zonyitoo/libsodium-sys.git"

View File

@@ -32,16 +32,20 @@ extern crate clap;
extern crate shadowsocks;
#[macro_use]
extern crate log;
extern crate fern;
extern crate time;
extern crate coio;
extern crate env_logger;
use clap::{App, Arg};
use std::net::{SocketAddr, IpAddr};
use std::env;
use coio::Scheduler;
use env_logger::LogBuilder;
use log::{LogRecord, LogLevelFilter};
use shadowsocks::config::{Config, ServerConfig, self};
use shadowsocks::config::DEFAULT_DNS_CACHE_CAPACITY;
use shadowsocks::relay::{RelayLocal, Relay};
@@ -82,25 +86,47 @@ fn main() {
.help("Threads in thread pool"))
.get_matches();
let logger_config = |show_location| fern::DispatchConfig {
format: Box::new(move|msg: &str, level: &log::LogLevel, location: &log::LogLocation| {
if show_location {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
level, location.__module_path, msg)
} else {
format!("[{}][{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(), level, msg)
}
}),
output: vec![fern::OutputConfig::stderr()],
level: log::LogLevelFilter::Trace
};
let mut log_builder = LogBuilder::new();
log_builder.filter(None, LogLevelFilter::Info);
match matches.occurrences_of("VERBOSE") {
0 => fern::init_global_logger(logger_config(false), log::LogLevelFilter::Info).unwrap(),
1 => fern::init_global_logger(logger_config(true), log::LogLevelFilter::Debug).unwrap(),
_ => fern::init_global_logger(logger_config(true), log::LogLevelFilter::Trace).unwrap()
0 => {
// Default filter
log_builder.format(|record: &LogRecord| {
format!("[{}][{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.args())
});
},
1 => {
let mut log_builder = log_builder.format(|record: &LogRecord| {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.location().module_path(), record.args())
});
log_builder.filter(Some("sslocal"), LogLevelFilter::Debug);
},
2 => {
let mut log_builder = log_builder.format(|record: &LogRecord| {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.location().module_path(), record.args())
});
log_builder.filter(Some("sslocal"), LogLevelFilter::Debug)
.filter(Some("shadowsocks"), LogLevelFilter::Debug);
},
_ => {
let mut log_builder = log_builder.format(|record: &LogRecord| {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.location().module_path(), record.args())
});
log_builder.filter(None, LogLevelFilter::Trace);
}
}
if let Ok(env_conf) = env::var("RUST_LOG") {
log_builder.parse(&env_conf);
}
log_builder.init().unwrap();
let mut config =
match matches.value_of("CONFIG") {
Some(cpath) => {

View File

@@ -34,14 +34,19 @@ extern crate clap;
extern crate shadowsocks;
#[macro_use]
extern crate log;
extern crate fern;
extern crate time;
extern crate coio;
extern crate env_logger;
use std::env;
use clap::{App, Arg};
use coio::Scheduler;
use env_logger::LogBuilder;
use log::{LogRecord, LogLevelFilter};
use shadowsocks::config::{Config, ServerConfig, self};
use shadowsocks::config::DEFAULT_DNS_CACHE_CAPACITY;
use shadowsocks::relay::{RelayServer, Relay};
@@ -82,25 +87,47 @@ fn main() {
.help("Threads in thread pool"))
.get_matches();
let logger_config = |show_location| fern::DispatchConfig {
format: Box::new(move|msg: &str, level: &log::LogLevel, location: &log::LogLocation| {
if show_location {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
level, location.__module_path, msg)
} else {
format!("[{}][{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(), level, msg)
}
}),
output: vec![fern::OutputConfig::stderr()],
level: log::LogLevelFilter::Trace
};
let mut log_builder = LogBuilder::new();
log_builder.filter(None, LogLevelFilter::Info);
match matches.occurrences_of("VERBOSE") {
0 => fern::init_global_logger(logger_config(false), log::LogLevelFilter::Info).unwrap(),
1 => fern::init_global_logger(logger_config(true), log::LogLevelFilter::Debug).unwrap(),
_ => fern::init_global_logger(logger_config(true), log::LogLevelFilter::Trace).unwrap()
0 => {
// Default filter
log_builder.format(|record: &LogRecord| {
format!("[{}][{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.args())
});
},
1 => {
let mut log_builder = log_builder.format(|record: &LogRecord| {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.location().module_path(), record.args())
});
log_builder.filter(Some("sslocal"), LogLevelFilter::Debug);
},
2 => {
let mut log_builder = log_builder.format(|record: &LogRecord| {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.location().module_path(), record.args())
});
log_builder.filter(Some("sslocal"), LogLevelFilter::Debug)
.filter(Some("shadowsocks"), LogLevelFilter::Debug);
},
_ => {
let mut log_builder = log_builder.format(|record: &LogRecord| {
format!("[{}][{}] [{}] {}", time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap(),
record.level(), record.location().module_path(), record.args())
});
log_builder.filter(None, LogLevelFilter::Trace);
}
}
if let Ok(env_conf) = env::var("RUST_LOG") {
log_builder.parse(&env_conf);
}
log_builder.init().unwrap();
let mut config =
match matches.value_of("CONFIG") {
Some(cpath) => {

View File

@@ -221,7 +221,7 @@ impl TcpRelayLocal {
}
}
info!("SYSTEM Connect {} local -> remote is closing", addr_cloned);
debug!("SYSTEM Connect {} local -> remote is closing", addr_cloned);
let _ = encrypt_stream.get_ref().shutdown(Shutdown::Both);
let _ = local_reader.get_ref().shutdown(Shutdown::Both);
@@ -283,7 +283,7 @@ impl TcpRelayLocal {
let _ = local_writer.flush();
info!("SYSTEM Connect {} local <- remote is closing", addr);
debug!("SYSTEM Connect {} local <- remote is closing", addr);
let _ = decrypt_stream.get_mut().shutdown(Shutdown::Both);
let _ = local_writer.shutdown(Shutdown::Both);