diff --git a/.gitignore b/.gitignore index a333ede..20b93e6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ target/ *.png *.json .run/ +logs/ # direnv /.direnv diff --git a/Cargo.lock b/Cargo.lock index 69f537b..ac618f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -426,6 +426,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "digest" version = "0.10.7" @@ -1252,6 +1261,7 @@ dependencies = [ "mania", "tokio", "tracing", + "tracing-appender", "tracing-subscriber", "uuid", ] @@ -1362,6 +1372,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.19" @@ -1599,6 +1615,12 @@ dependencies = [ "pnet_macros_support", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -2302,6 +2324,37 @@ dependencies = [ "once_cell", ] +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -2495,6 +2548,18 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" version = "0.1.28" diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 6919b90..446eb50 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -13,6 +13,7 @@ console-subscriber = { version = "0.4.1", optional = true } tokio.workspace = true uuid.workspace = true cfg-if = "1.0.0" +tracing-appender = "0.2.3" [features] default = [] @@ -20,4 +21,4 @@ tokio-tracing = ["console-subscriber"] [[example]] name = "mania_multi_login" -path = "multi_login.rs" \ No newline at end of file +path = "multi_login.rs" diff --git a/examples/multi_login.rs b/examples/multi_login.rs index 39aecdf..4e7eb0f 100644 --- a/examples/multi_login.rs +++ b/examples/multi_login.rs @@ -1,25 +1,36 @@ use mania::{Client, ClientConfig, DeviceInfo, KeyStore}; use std::fs; +use std::io::stdout; +use tracing_subscriber::prelude::*; use uuid::Uuid; #[tokio::main] async fn main() { cfg_if::cfg_if! { if #[cfg(feature = "tokio-tracing")] { - use tracing_subscriber::prelude::*; - let console_layer = console_subscriber::spawn(); - tracing_subscriber::registry() - .with(console_layer) - .with( - tracing_subscriber::fmt::layer() - .with_filter(tracing_subscriber::EnvFilter::new("trace")), - ) - .init(); - tracing::info!("tokio-tracing initialized."); + let console_layer = console_subscriber::spawn(); + tracing_subscriber::registry() + .with(console_layer) + .with( + tracing_subscriber::fmt::layer() + .with_filter(tracing_subscriber::EnvFilter::new("trace")), + ) + .init(); + tracing::info!("tokio-tracing initialized."); } else { - tracing_subscriber::fmt() - .with_env_filter(tracing_subscriber::EnvFilter::new("debug")) - .init(); + use tracing_subscriber::{fmt, EnvFilter}; + use tracing_appender::rolling::{RollingFileAppender, Rotation}; + let file_appender = RollingFileAppender::new(Rotation::DAILY, "./logs", "mania.log"); + let fmt_layer = fmt::Layer::default() + .with_writer(stdout) + .with_filter(EnvFilter::new("debug")); + let file_layer = fmt::Layer::default() + .with_writer(file_appender) + .with_filter(EnvFilter::new("trace")); + let subscriber = tracing_subscriber::registry() + .with(fmt_layer) + .with(file_layer); + subscriber.init(); } } let config = ClientConfig::default();