From 26b0b067595f407d2de564ce6c12505316098f1d Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 13 Jul 2022 13:14:28 +0530 Subject: [PATCH] refactor(logging): extract tracing infrastructure to its own module --- src/logging.rs | 33 +++++++++++++++++++++++++++++++++ src/main.rs | 32 +++++--------------------------- 2 files changed, 38 insertions(+), 27 deletions(-) create mode 100644 src/logging.rs diff --git a/src/logging.rs b/src/logging.rs new file mode 100644 index 0000000..969d368 --- /dev/null +++ b/src/logging.rs @@ -0,0 +1,33 @@ +use tracing::dispatcher::SetGlobalDefaultError; +use tracing::subscriber::set_global_default; +use tracing::Level; +use tracing_subscriber::filter::Targets; + +#[cfg(not(feature = "journald"))] +fn configure_tracing(filter: Targets) -> Result<(), SetGlobalDefaultError> { + use tracing_subscriber::layer::SubscriberExt; + use tracing_subscriber::{fmt, Layer}; + + let stdout_log = fmt::layer().pretty(); + let subscriber = + tracing_subscriber::registry().with(stdout_log.with_filter(filter)); + set_global_default(subscriber) +} + +#[cfg(feature = "journald")] +fn configure_tracing(filter: Targets) -> Result<(), SetGlobalDefaultError> { + use tracing_journald::Layer; + use tracing_subscriber::layer::SubscriberExt; + use tracing_subscriber::registry; + + let subscriber = registry() + .with(filter) + .with(Layer::new().unwrap().with_field_prefix(None)); + set_global_default(subscriber) +} + +pub fn init() -> Result<(), SetGlobalDefaultError> { + let tracing_filter = + Targets::new().with_target("clipboard_subsitutor", Level::DEBUG); + configure_tracing(tracing_filter) +} diff --git a/src/main.rs b/src/main.rs index 60ed7c8..4a8a5b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,12 @@ mod clipboard; mod config; +mod logging; #[cfg(test)] mod test; use std::path::PathBuf; -use anyhow::{anyhow, Result}; +use anyhow::{anyhow, bail, Result}; use dirs::config_dir; use tracing::debug; @@ -16,7 +17,9 @@ fn main() -> Result<()> { if check_for_version_arg() { return Ok(()); } - configure_tracing(); + if let Err(e) = logging::init() { + bail!(e) + }; let config_path = get_config_path()?; let config_str = std::fs::read_to_string(config_path.as_path()).unwrap_or_default(); @@ -42,31 +45,6 @@ fn print_version() { ); } -#[cfg(not(feature = "journald"))] -fn configure_tracing() { - use tracing::Level; - use tracing_subscriber::FmtSubscriber; - - let subscriber = FmtSubscriber::builder() - .with_max_level(Level::TRACE) - .finish(); - - tracing::subscriber::set_global_default(subscriber) - .expect("setting default subscriber failed"); -} - -#[cfg(feature = "journald")] -fn configure_tracing() { - use tracing_journald::Layer; - use tracing_subscriber::layer::SubscriberExt; - use tracing_subscriber::Registry; - - let subscriber = - Registry::default().with(Layer::new().unwrap().with_field_prefix(None)); - tracing::subscriber::set_global_default(subscriber) - .expect("setting default subscriber failed"); -} - fn get_config_path() -> Result { let mut config_path = config_dir().ok_or_else(|| anyhow!("Failed to get config dir"))?;