ALPHA: wire is a tool to deploy nixos systems wire.althaea.zone/
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

impl non-verbose log formatter

+40 -4
+40 -4
wire/cli/src/tracing_setup.rs
··· 9 9 10 10 use clap_verbosity_flag::{Verbosity, WarnLevel}; 11 11 use lib::STDIN_CLOBBER_LOCK; 12 + use tracing::{Level, Subscriber}; 12 13 use tracing_log::AsTrace; 13 - use tracing_subscriber::{Layer, Registry, layer::SubscriberExt, util::SubscriberInitExt}; 14 + use tracing_subscriber::{ 15 + Layer, Registry, 16 + fmt::{ 17 + FormatEvent, FormatFields, 18 + format::{self, Format, Full}, 19 + }, 20 + layer::SubscriberExt, 21 + registry::LookupSpan, 22 + util::SubscriberInitExt, 23 + }; 14 24 15 25 struct NonClobberingWriter { 16 26 queue: VecDeque<Vec<u8>>, ··· 62 72 } 63 73 } 64 74 75 + struct WireFormat(Format<Full, ()>); 76 + 77 + impl<S, N> FormatEvent<S, N> for WireFormat 78 + where 79 + S: Subscriber + for<'a> LookupSpan<'a>, 80 + N: for<'a> FormatFields<'a> + 'static, 81 + { 82 + fn format_event( 83 + &self, 84 + ctx: &tracing_subscriber::fmt::FmtContext<'_, S, N>, 85 + writer: tracing_subscriber::fmt::format::Writer<'_>, 86 + event: &tracing::Event<'_>, 87 + ) -> std::fmt::Result { 88 + let metadata = event.metadata(); 89 + 90 + if !matches!(metadata.level(), &Level::INFO) { 91 + return self.0.format_event(ctx, writer, event); 92 + } 93 + 94 + self.0.format_event(ctx, writer, event)?; 95 + 96 + Ok(()) 97 + } 98 + } 99 + 65 100 pub fn setup_logging(verbosity: Verbosity<WarnLevel>) { 66 101 let filter = verbosity.log_level_filter().as_trace(); 67 102 let registry = tracing_subscriber::registry(); 68 103 69 - let layer = tracing_subscriber::fmt::layer::<Registry>() 70 - .without_time() 71 - .with_target(false) 104 + let event_formatter = WireFormat(format::format().without_time().with_target(false)); 105 + 106 + let layer = tracing_subscriber::fmt::layer() 107 + .event_format(event_formatter) 72 108 .with_writer(NonClobberingWriter::new) 73 109 .with_filter(filter); 74 110