From 2d732fd2c44bdf91c42ce68e9ee886fed6f78b8f Mon Sep 17 00:00:00 2001 From: ElementG9 Date: Sun, 5 Jul 2020 21:38:50 -0600 Subject: [PATCH] Create logger, remove refs to mctypes.rs and net.rs --- Cargo.lock | 369 +++++--------------------------------------------- Cargo.toml | 5 +- log.txt | 5 + src/logger.rs | 102 ++++++++++++++ src/main.rs | 21 ++- 5 files changed, 149 insertions(+), 353 deletions(-) create mode 100644 log.txt create mode 100644 src/logger.rs diff --git a/Cargo.lock b/Cargo.lock index f0607b0..ff98de2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,26 +4,10 @@ name = "Composition" version = "0.1.0" dependencies = [ - "ozelot", - "serde", - "serde_json", + "chrono", + "colorful", ] -[[package]] -name = "addr2line" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a49806b9dadc843c61e7c97e72490ad7f7220ae249012fbda9ad0609457c0543" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler32" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" - [[package]] name = "autocfg" version = "1.0.0" @@ -31,135 +15,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] -name = "backtrace" -version = "0.3.48" +name = "chrono" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df2f85c8a2abbe3b7d7e748052fdd9b76a0458fdeb16ad4223f5eca78c7c130" +checksum = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6" dependencies = [ - "addr2line", - "cfg-if", - "libc", - "object", - "rustc-demangle", + "num-integer", + "num-traits", + "time", ] [[package]] -name = "bitflags" -version = "1.2.1" +name = "colorful" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "cc" -version = "1.0.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "crc32fast" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "curl" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "762e34611d2d5233a506a79072be944fddd057db2f18e04c0d6fa79e3fd466fd" -dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2", - "winapi", -] - -[[package]] -name = "curl-sys" -version = "0.4.31+curl-7.70.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcd62757cc4f5ab9404bc6ca9f0ae447e729a1403948ce5106bd588ceac6a3b0" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "winapi", -] - -[[package]] -name = "error-chain" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd" -dependencies = [ - "backtrace", - "version_check", -] - -[[package]] -name = "flate2" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfff41391129e0a856d6d822600b8d71179d46879e310417eb9c762eb178b42" -dependencies = [ - "cfg-if", - "crc32fast", - "libc", - "miniz_oxide", -] - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "gimli" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c" - -[[package]] -name = "itoa" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "0bca1619ff57dd7a56b58a8e25ef4199f123e78e503fe1653410350a1b98ae65" [[package]] name = "libc" @@ -168,209 +38,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" [[package]] -name = "libz-sys" -version = "1.0.25" +name = "num-integer" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "miniz_oxide" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" -dependencies = [ - "adler32", -] - -[[package]] -name = "netbuf" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41e95a536af3c11c6dcf16f30b8319aad291049e67c8aa4701f69f11761a9db" - -[[package]] -name = "object" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cbca9424c482ee628fa549d9c812e2cd22f1180b9222c9200fdfa6eb31aecb2" - -[[package]] -name = "openssl" -version = "0.10.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee6d85f4cb4c4f59a6a85d5b68a233d280c82e29e822913b9c8b129fbf20bdd" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "lazy_static", - "libc", - "openssl-sys", -] - -[[package]] -name = "openssl-probe" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" - -[[package]] -name = "openssl-sys" -version = "0.9.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7410fef80af8ac071d4f63755c0ab89ac3df0fd1ea91f1d1f37cf5cec4395990" +checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" dependencies = [ "autocfg", - "cc", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +dependencies = [ + "autocfg", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +dependencies = [ "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "ozelot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea00748638603838e4c5907d8d10449ee9a7e548667af7c20c684888006f6657" -dependencies = [ - "byteorder", - "curl", - "error-chain", - "flate2", - "netbuf", - "openssl", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "pkg-config" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" - -[[package]] -name = "proc-macro2" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1502d12e458c49a4c9cbff560d0fe0060c252bc29799ed94ca2ed4bb665a0101" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "redox_syscall" -version = "0.1.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" - -[[package]] -name = "rustc-demangle" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" - -[[package]] -name = "ryu" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" - -[[package]] -name = "schannel" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" -dependencies = [ - "lazy_static", "winapi", ] -[[package]] -name = "serde" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" - -[[package]] -name = "serde_derive" -version = "1.0.110" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "socket2" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "winapi", -] - -[[package]] -name = "syn" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f14a640819f79b72a710c0be059dce779f9339ae046c8bef12c361d56702146f" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "unicode-xid" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" - -[[package]] -name = "vcpkg" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" - -[[package]] -name = "version_check" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" - [[package]] name = "winapi" version = "0.3.8" diff --git a/Cargo.toml b/Cargo.toml index 4063952..7625db3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,5 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -serde = "1.0.110" -serde_json = "1.0.53" -ozelot = "0.9.0" +chrono = "0.4.13" +colorful = "0.2.1" diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..1d028cb --- /dev/null +++ b/log.txt @@ -0,0 +1,5 @@ +2020-07-05 21:37:41 [IMPORTANT] - Cleared log file log.txt +2020-07-05 21:37:41 [IMPORTANT] - This is important information +2020-07-05 21:37:41 [INFO] - This is information +2020-07-05 21:37:41 [WARN] - This is a warning +2020-07-05 21:37:41 [ERROR] - This is an error diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 0000000..c6316bd --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,102 @@ +extern crate chrono; +extern crate colorful; + +use chrono::prelude::*; +use colorful::{Color, Colorful}; +use std::fs::File; +use std::fs::OpenOptions; +use std::io::prelude::*; + +pub fn get_timestring() -> String { + Local::now().format("%Y-%m-%d %H:%M:%S").to_string() +} +pub fn log(logtype: &str, logmessage: &str) -> String { + format!("{} [{}] - {}", get_timestring(), logtype, logmessage) +} + +pub fn new(logfile: &str) -> Logger { + Logger::new(logfile) +} + +pub struct Logger { + pub logfile: String, + pub info_written: u32, + pub warn_written: u32, + pub error_written: u32, + pub important_written: u32, + pub write_enabled: bool, +} +impl Logger { + pub fn new(logfile: &str) -> Logger { + Logger { + logfile: logfile.to_owned(), + info_written: 0, + warn_written: 0, + error_written: 0, + important_written: 0, + write_enabled: true, + } + } + pub fn important(&mut self, s: &str) { + let l = log("IMPORTANT", s); + println!("{}", l.clone().color(Color::Cyan)); + self.append(&l); + self.important_written += 1; + } + pub fn info(&mut self, s: &str) { + let l = log("INFO", s); + println!("{}", l.clone().color(Color::White)); + self.append(&l); + self.info_written += 1; + } + pub fn warn(&mut self, s: &str) { + let l = log("WARN", s); + println!("{}", l.clone().color(Color::Yellow)); + self.append(&l); + self.warn_written += 1; + } + pub fn error(&mut self, s: &str) { + let l = log("ERROR", s); + println!("{}", l.clone().color(Color::Red)); + self.append(&l); + self.error_written += 1; + } + pub fn append(&mut self, s: &str) { + if self.write_enabled { + let a = || -> std::io::Result<()> { + let mut file = OpenOptions::new() + .create(true) + .write(true) + .append(true) + .open(&self.logfile)?; + writeln!(file, "{}", s)?; + Ok(()) + }; + if a().is_err() { + self.logger_error(&format!("Could not write to log file {}", self.logfile)); + } + } + } + pub fn clear(&mut self) { + if self.write_enabled { + if std::fs::remove_file(&self.logfile).is_err() { + self.logger_error(&format!("Could not write to log file {}", self.logfile)); + } + } + self.info_written = 0; + self.warn_written = 0; + self.error_written = 0; + self.important_written = 0; + self.important(&format!("Cleared log file {}", self.logfile)); + } + pub fn read(&self) -> std::io::Result { + let mut f = File::open(&self.logfile)?; + let mut buffer = String::new(); + f.read_to_string(&mut buffer)?; + Ok(buffer) + } + pub fn logger_error(&mut self, error_message: &str) { + self.write_enabled = false; + self.error(error_message); + } +} diff --git a/src/main.rs b/src/main.rs index f92e05f..8530094 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,12 @@ #![allow(non_snake_case)] -pub static DEBUG_LOGGING: bool = true; -pub static SERVER_VERSION: &str = "1.15.2"; -pub static SERVER_PROTOCOL_VERSION: usize = 578; -pub static SERVER_MOTD: &str = "ligma balls"; +pub mod logger; -// mod net; -// mod mctypes; - -fn main() -> std::io::Result<()> { - // Listener loops forever. - // net::start_listener().expect("could not start listener"); - // println!("Stopping server"); - use std::{io::prelude::*, net::TcpStream}; - let mut stream = TcpStream::connect("206.189.67.44:25565")?; +fn main() { + let mut log = logger::new("log.txt"); + log.clear(); + log.important("This is important information"); + log.info("This is information"); + log.warn("This is a warning"); + log.error("This is an error"); }