From 40dd7e0d6fa8183234eaa1c7be8c02156bae06a3 Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Mon, 12 Aug 2024 15:41:46 +0200 Subject: [PATCH] optionally use JSON format for logs --- Cargo.toml | 2 +- src/bin/cratesfyi.rs | 24 ++++++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 78daf7903..2a71cfb4b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ sentry-tower = { version = "0.34.0", features = ["http"] } sentry-anyhow = { version = "0.34.0", features = ["backtrace"] } log = "0.4" tracing = "0.1.37" -tracing-subscriber = { version = "0.3.16", default-features = false, features = ["ansi", "fmt", "env-filter", "tracing-log"] } +tracing-subscriber = { version = "0.3.16", default-features = false, features = ["ansi", "fmt", "json", "env-filter", "tracing-log"] } tracing-log = "0.2.0" regex = "1" clap = { version = "4.0.22", features = [ "derive" ] } diff --git a/src/bin/cratesfyi.rs b/src/bin/cratesfyi.rs index 0d8b46ca6..de6e6d967 100644 --- a/src/bin/cratesfyi.rs +++ b/src/bin/cratesfyi.rs @@ -33,14 +33,22 @@ fn main() { // through rustwide. rustwide::logging::init_with(LogTracer::new()); - let tracing_registry = tracing_subscriber::registry() - .with(tracing_subscriber::fmt::layer()) - .with( - EnvFilter::builder() - .with_default_directive(Directive::from_str("docs_rs=info").unwrap()) - .with_env_var("DOCSRS_LOG") - .from_env_lossy(), - ); + let log_formatter = { + let log_format = env::var("DOCSRS_LOG_FORMAT").unwrap_or_default(); + + if log_format == "json" { + tracing_subscriber::fmt::layer().json().boxed() + } else { + tracing_subscriber::fmt::layer().boxed() + } + }; + + let tracing_registry = tracing_subscriber::registry().with(log_formatter).with( + EnvFilter::builder() + .with_default_directive(Directive::from_str("docs_rs=info").unwrap()) + .with_env_var("DOCSRS_LOG") + .from_env_lossy(), + ); let _sentry_guard = if let Ok(sentry_dsn) = env::var("SENTRY_DSN") { tracing::subscriber::set_global_default(tracing_registry.with(