From 8a9ce50409a565bf9e46876f2e25a067f73d422e Mon Sep 17 00:00:00 2001 From: Christopher Moyer Date: Tue, 17 Dec 2024 23:14:56 -0500 Subject: [PATCH] add ascii and log4rs --- Cargo.lock | 189 ++++++++++++++++++++++++++++++++++++++++++++++------ Cargo.toml | 2 + log4rs.yaml | 33 +++++++++ src/main.rs | 21 +++++- 4 files changed, 223 insertions(+), 22 deletions(-) create mode 100644 log4rs.yaml diff --git a/Cargo.lock b/Cargo.lock index bc2eabd..a49e870 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -91,6 +91,18 @@ dependencies = [ "libc", ] +[[package]] +name = "anyhow" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "asn1-rs" version = "0.6.2" @@ -115,7 +127,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", "synstructure", ] @@ -127,7 +139,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -266,7 +278,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -581,7 +593,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.90", ] [[package]] @@ -592,7 +604,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -636,7 +648,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -649,6 +661,17 @@ dependencies = [ "serde", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "des" version = "0.8.1" @@ -658,6 +681,12 @@ dependencies = [ "cipher", ] +[[package]] +name = "destructure_traitobject" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7" + [[package]] name = "digest" version = "0.10.7" @@ -698,7 +727,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -1000,6 +1029,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "hyper" version = "1.5.1" @@ -1173,7 +1208,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -1348,6 +1383,43 @@ name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +dependencies = [ + "serde", +] + +[[package]] +name = "log-mdc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" + +[[package]] +name = "log4rs" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6" +dependencies = [ + "anyhow", + "arc-swap", + "chrono", + "derivative", + "fnv", + "humantime", + "libc", + "log", + "log-mdc", + "once_cell", + "parking_lot", + "rand", + "serde", + "serde-value", + "serde_json", + "serde_yaml", + "thiserror", + "thread-id", + "typemap-ors", + "winapi", +] [[package]] name = "matchit" @@ -1500,6 +1572,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + [[package]] name = "overload" version = "0.1.1" @@ -1983,6 +2064,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + [[package]] name = "serde_derive" version = "1.0.216" @@ -1991,7 +2082,7 @@ checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -2064,7 +2155,20 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 2.0.90", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", ] [[package]] @@ -2176,6 +2280,17 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.90" @@ -2201,7 +2316,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -2233,7 +2348,17 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", +] + +[[package]] +name = "thread-id" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" +dependencies = [ + "libc", + "winapi", ] [[package]] @@ -2321,7 +2446,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -2457,6 +2582,15 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "typemap-ors" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68c24b707f02dd18f1e4ccceb9d49f2058c2fb86384ef9972592904d7a28867" +dependencies = [ + "unsafe-any-ors", +] + [[package]] name = "typenum" version = "1.17.0" @@ -2469,6 +2603,21 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +[[package]] +name = "unsafe-any-ors" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a303d30665362d9680d7d91d78b23f5f899504d4f08b3c4cf08d055d87c0ad" +dependencies = [ + "destructure_traitobject", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" @@ -2543,7 +2692,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn", + "syn 2.0.90", "wasm-bindgen-shared", ] @@ -2565,7 +2714,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2584,6 +2733,8 @@ dependencies = [ "chrono", "confy", "lapin", + "log", + "log4rs", "serde", "serde_json", "serde_with", @@ -2841,7 +2992,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", "synstructure", ] @@ -2863,7 +3014,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] [[package]] @@ -2883,7 +3034,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", "synstructure", ] @@ -2912,5 +3063,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.90", ] diff --git a/Cargo.toml b/Cargo.toml index 27cbea1..019e0b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,8 @@ serde = { version = "1.0.216", features = ["derive"] } serde_json = "1.0.133" serde_with = "3.11.0" lapin = "2.5.0" +log = "0.4.22" +log4rs = "1.3.0" confy = "0.6.1" tokio-executor-trait = "2.1.3" tokio-reactor-trait = "1.1.0" diff --git a/log4rs.yaml b/log4rs.yaml new file mode 100644 index 0000000..1e80189 --- /dev/null +++ b/log4rs.yaml @@ -0,0 +1,33 @@ +# Scan this file for changes every 30 seconds +refresh_rate: 30 seconds + +appenders: + # An appender named "stdout" that writes to stdout + stdout: + kind: console + + # An appender named "requests" that writes to a file with a custom pattern encoder + requests: + kind: file + path: "log/requests.log" + encoder: + pattern: "{d} - {m}{n}" + +# Set the default logging level to "warn" and attach the "stdout" appender to the root +root: + level: debug + appenders: + - stdout + +loggers: + # Raise the maximum log level for events sent to the "app::backend::db" logger to "info" + app::backend::db: + level: info + + # Route log events sent to the "app::requests" logger to the "requests" appender, + # and *not* the normal appenders installed at the root + app::requests: + level: info + appenders: + - requests + additive: false \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index db9112f..bfa1476 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,13 +16,28 @@ use std::fs::File; use std::io::Write; use std::option::Option; use std::path::{Path, PathBuf}; +use log::error; #[tokio::main] async fn main() { + let ascii = r#" +____ __ ____ __ __ __ _______..______ _______ .______ ___ .______ __ +\ \ / \ / / | | | | | | / || _ \ | ____|| _ \ / \ | _ \ | | + \ \/ \/ / | |__| | | | | (----`| |_) | | |__ | |_) | / ^ \ | |_) | | | + \ / | __ | | | \ \ | ___/ | __| | / / /_\ \ | ___/ | | + \ /\ / | | | | | | .----) | | | | |____ | |\ \----. / _____ \ | | | | + \__/ \__/ |__| |__| |__| |_______/ | _| |_______|| _| `._____| /__/ \__\ | _| |__| + + "#; + println!("{ascii}"); tracing_subscriber::fmt::init(); let args: Vec = env::args().collect(); // let cfg: AppConfig = confy::load_path(Path::new(&args[1])).expect("Couldn't read config"); let cfg: AppConfig = confy::load_path("./config.toml").expect("Couldn't read config"); + match Path::new("log4rs.yaml").exists() { + true => log4rs::init_file("log4rs.yaml", Default::default()).unwrap(), + false => println!("No log4rs.yaml file found. Logging will not be enabled") + } let options = ConnectionProperties::default() .with_executor(tokio_executor_trait::Tokio::current()) @@ -48,7 +63,7 @@ async fn upload_call(Extension(cfg): Extension, Extension(channel): E let call: Call = match serde_json::from_str(&field.text().await.unwrap()) { Ok(call) => call, Err(error) => { - println!("{}", error); + error!("{}", error); return (StatusCode::BAD_REQUEST, "Failed to parse json").into_response(); } }; @@ -61,7 +76,7 @@ async fn upload_call(Extension(cfg): Extension, Extension(channel): E let mut file = match File::create(&file_path) { Ok(file) => file, Err(error) => { - println!("{}", format!("Could not create file {}, {}", &file_path.display(), error).as_str()); + error!("Could not create file {}: {}", &file_path.display(), error); return StatusCode::INTERNAL_SERVER_ERROR.into_response(); } }; @@ -70,7 +85,7 @@ async fn upload_call(Extension(cfg): Extension, Extension(channel): E call_file = Some(file_path) } Err(error) => { - println!("{}", format!("Could not write to file {}, {}", &file_path.display(), error).as_str()); + error!("Could not write to file {}: {}", &file_path.display(), error); return StatusCode::INTERNAL_SERVER_ERROR.into_response(); } };