diff --git a/src/handlers/audio_synth_handler.rs b/src/handlers/audio_synth_handler.rs index 9ea03b9ea4..c034d354ef 100644 --- a/src/handlers/audio_synth_handler.rs +++ b/src/handlers/audio_synth_handler.rs @@ -25,7 +25,6 @@ use super::error_filter::build_error; const QUERY_PARAM : &'static str = "q"; - /// Synthesizes audio from input. pub struct AudioSynthHandler { /// Root of where files can be served from. @@ -53,7 +52,7 @@ impl Handler for AudioSynthHandler { }, }; - println!("Request: {}", sentence); + info!("Speak Request: {}", sentence); let result = self.create_audio(sentence); let mime_type = "audio/wav".parse::().unwrap(); diff --git a/src/handlers/error_filter.rs b/src/handlers/error_filter.rs index ab82aa1568..4c52a9301c 100644 --- a/src/handlers/error_filter.rs +++ b/src/handlers/error_filter.rs @@ -20,7 +20,7 @@ pub fn build_error(status: Status, message: &str) -> IronResult { impl AfterMiddleware for ErrorFilter { fn catch(&self, _: &mut Request, err: IronError) -> IronResult { - println!("Error has occurred! Error: {}", err.error); + error!("Error has occurred! Error: {}", err.error); // TODO: Return JSON if request was JSON, otherwise HTML. match err.response.status { diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 0000000000..e896acc48f --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,37 @@ +// Copyright (c) 2015 Brandon Thomas + +use log::LogLevel; +use log::LogLevelFilter; +use log::LogMetadata; +use log::LogRecord; +use log::SetLoggerError; +use log; +use time::now; + +/// Simple logger example taken from rust-lang.org docs. +pub struct SimpleLogger; + +impl SimpleLogger { + /// Install the logger. + pub fn init() -> Result<(), SetLoggerError> { + log::set_logger(|max_log_level| { + max_log_level.set(LogLevelFilter::Info); + Box::new(SimpleLogger) + }) + } +} + +impl log::Log for SimpleLogger { + fn enabled(&self, metadata: &LogMetadata) -> bool { + metadata.level() <= LogLevel::Info + } + + fn log(&self, record: &LogRecord) { + if self.enabled(record.metadata()) { + let time = now(); + let timestamp = time.rfc3339(); + println!("[{}] {} - {}", timestamp, record.level(), record.args()); + } + } +} + diff --git a/src/main.rs b/src/main.rs index 2dc4db9d10..46a2f32d57 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,16 @@ +// Copyright (c) 2015 Brandon Thomas + extern crate hound; extern crate iron; +#[macro_use] +extern crate log; extern crate router; extern crate rustc_serialize; +extern crate time; extern crate urlencoded; pub mod handlers; +pub mod logger; pub mod words; use iron::prelude::*; @@ -14,8 +20,10 @@ use handlers::audio_synth_handler::AudioSynthHandler; use handlers::error_filter::ErrorFilter; use handlers::file_server_handler::FileServerHandler; use handlers::vocab_list_handler::VocabListHandler; +use logger::SimpleLogger; fn main() { + SimpleLogger::init().unwrap(); start_server(); } @@ -35,7 +43,7 @@ fn start_server() { router.get("/", FileServerHandler::new(file_path, index)); router.get("/assets/:filename", FileServerHandler::new(file_path, index)); - println!("Starting server..."); + info!("Starting server..."); Iron::new(router).http("0.0.0.0:9000").unwrap(); }