From aa3b7e49ba334092f802e07fceb4e95e5df9c09a Mon Sep 17 00:00:00 2001 From: cohenarthur Date: Sat, 18 Apr 2020 15:30:33 +0200 Subject: [PATCH] logger: Add warn!, error! and info! --- Cargo.lock | 43 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ src/logger.rs | 41 +++++++++++++++++++++++++++++++++++++++++ src/main.rs | 6 ++++++ 4 files changed, 92 insertions(+) create mode 100644 src/logger.rs diff --git a/Cargo.lock b/Cargo.lock index e926047..786a6c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,6 +68,17 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "chrono" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2" +dependencies = [ + "num-integer", + "num-traits", + "time", +] + [[package]] name = "clap" version = "2.33.0" @@ -83,6 +94,17 @@ dependencies = [ "vec_map", ] +[[package]] +name = "colored" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" +dependencies = [ + "atty", + "lazy_static", + "winapi 0.3.8", +] + [[package]] name = "core-foundation" version = "0.7.0" @@ -616,6 +638,25 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "num-integer" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" +dependencies = [ + "autocfg", +] + [[package]] name = "num_cpus" version = "1.12.0" @@ -1133,6 +1174,8 @@ dependencies = [ name = "suckit" version = "0.1.0" dependencies = [ + "chrono", + "colored", "kuchiki", "pretty_assertions", "reqwest", diff --git a/Cargo.toml b/Cargo.toml index 21d8f4c..907c38f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,5 @@ structopt = "0.3" reqwest = { version = "0.10", features = ["blocking"] } pretty_assertions = "0.6" kuchiki = "0.8" +colored = "1.9" +chrono = "0.4" diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 0000000..f5c0ce0 --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,41 @@ +use colored::*; +use chrono::Local; + +/// Time formatting string used in the call to Local::now() +/// Outputs the following: +/// --T:: +static TIME_FORMAT: &str = "%Y-%m-%dT%H:%M:%S"; + +/// Write a message using the following format +/// : [
] +pub struct Logger { +} + +impl Logger { + pub fn info(message: String) { + println!("{}: [{}] {}", Local::now().format(TIME_FORMAT), "INFO".blue(), message); + } + + pub fn warn(message: String) { + println!("{}: [{}] {}", Local::now().format(TIME_FORMAT), "WARN".yellow(), message); + } + + pub fn error(message: String) { + eprintln!("{}: [{}] {}", Local::now().format(TIME_FORMAT), "ERROR".red(), message); + } +} + +#[macro_export] +macro_rules! info { + ($($arg: tt)*) => ($crate::logger::Logger::info(format!($($arg)*))); +} + +#[macro_export] +macro_rules! warn { + ($($arg: tt)*) => ($crate::logger::Logger::warn(format!($($arg)*))); +} + +#[macro_export] +macro_rules! error { + ($($arg: tt)*) => ($crate::logger::Logger::error(format!($($arg)*))); +} diff --git a/src/main.rs b/src/main.rs index cf269c0..1b471aa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ mod disk; mod dom; mod downloader; mod scraper; +mod logger; use scraper::Scraper; @@ -11,5 +12,10 @@ fn main() { let mut scraper = Scraper::new(args); + info!("Hey there, suckit speaking"); + warn!("Start sucking"); + scraper.run(); + + error!("sucking complete !"); }