From 125bad04da8de8e49eb90dacdb5ec49334995083 Mon Sep 17 00:00:00 2001 From: Natsu Kagami Date: Fri, 3 Jan 2025 13:17:31 +0100 Subject: [PATCH] Add tracing --- Cargo.lock | 69 ++++++++++++++++++++++++++++++++++++++++++++ youmubot/Cargo.toml | 2 ++ youmubot/src/main.rs | 20 ++++++++++++- 3 files changed, 90 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 9113290..7ba7b5c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1353,6 +1353,16 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -1475,6 +1485,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parking_lot" version = "0.12.1" @@ -2145,6 +2161,15 @@ dependencies = [ "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "signature" version = "2.2.0" @@ -2567,6 +2592,16 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "time" version = "0.3.37" @@ -2737,6 +2772,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", ] [[package]] @@ -2890,6 +2951,12 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4bf03e0ca70d626ecc4ba6b0763b934b6f2976e8c744088bb3c1d646fbb1ad0" +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vcpkg" version = "0.2.15" @@ -3238,6 +3305,8 @@ dependencies = [ "poise", "serenity", "tokio", + "tracing", + "tracing-subscriber", "youmubot-cf", "youmubot-core", "youmubot-db", diff --git a/youmubot/Cargo.toml b/youmubot/Cargo.toml index 7dbec7f..19fa4b2 100644 --- a/youmubot/Cargo.toml +++ b/youmubot/Cargo.toml @@ -22,4 +22,6 @@ youmubot-prelude = { path = "../youmubot-prelude" } youmubot-core = { path = "../youmubot-core" } youmubot-osu = { path = "../youmubot-osu", optional = true } youmubot-cf = { path = "../youmubot-cf", optional = true } +tracing = "0.1" +tracing-subscriber = "0.3" diff --git a/youmubot/src/main.rs b/youmubot/src/main.rs index b79d581..24e8093 100644 --- a/youmubot/src/main.rs +++ b/youmubot/src/main.rs @@ -147,9 +147,27 @@ async fn is_not_channel_mod(ctx: &Context, msg: &Message) -> bool { } } +const LOG_LEVEL_KEY: &str = env_logger::DEFAULT_FILTER_ENV; + +fn trace_level() -> tracing::Level { + var(LOG_LEVEL_KEY) + .map(|v| v.parse().unwrap()) + .unwrap_or(tracing::Level::WARN) +} + #[tokio::main] async fn main() { - env_logger::init(); + env_logger::init_from_env(env_logger::Env::default().filter(LOG_LEVEL_KEY)); + // a builder for `FmtSubscriber`. + let subscriber = tracing_subscriber::FmtSubscriber::builder() + // all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.) + // will be written to stdout. + .with_max_level(trace_level()) + // completes the builder. + .finish(); + + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); + // Setup dotenv if let Ok(path) = dotenv::dotenv() { println!("Loaded dotenv from {:?}", path);