From 12aafc8477bdecbbf20bebe1a72587e96fdfc2f0 Mon Sep 17 00:00:00 2001 From: Kyle Sabo Date: Tue, 30 Jul 2024 20:38:08 -0700 Subject: [PATCH] PR feedback --- src/layer.rs | 28 +++++------ src/lib.rs | 14 +----- src/native/common_schema/etw_cs.rs | 25 +++++++--- src/native/common_schema/user_events_cs.rs | 51 ++++++++++++-------- src/native/etw.rs | 27 +++++++---- src/native/mod.rs | 13 ++--- src/native/noop.rs | 8 ++-- src/native/user_events.rs | 55 +++++++++++++--------- 8 files changed, 124 insertions(+), 97 deletions(-) diff --git a/src/layer.rs b/src/layer.rs index a95250d..a661c8c 100644 --- a/src/layer.rs +++ b/src/layer.rs @@ -13,7 +13,7 @@ use tracing_subscriber::{registry::LookupSpan, Layer}; use crate::_details::{EtwFilter, EtwLayer}; use crate::native::{EventWriter, GuidWrapper, ProviderTypes}; -use crate::{map_level, native}; +use crate::native; use crate::values::*; use crate::statics::*; @@ -21,10 +21,10 @@ pub struct LayerBuilder where Mode: ProviderTypes { - pub(crate) provider_name: String, - pub(crate) provider_id: GuidWrapper, - pub(crate) provider_group: Option, - pub(crate) default_keyword: u64, + provider_name: String, + provider_id: GuidWrapper, + provider_group: Option, + default_keyword: u64, _m: PhantomData, } @@ -234,7 +234,7 @@ where }; if Mode::supports_enable_callback() { - if self.provider.enabled(map_level(metadata.level()), keyword) { + if self.provider.enabled(metadata.level(), keyword) { tracing::subscriber::Interest::always() } else { tracing::subscriber::Interest::never() @@ -259,7 +259,7 @@ where }; self.provider - .enabled(map_level(metadata.level()), keyword) + .enabled(metadata.level(), keyword) } fn event_enabled( @@ -275,7 +275,7 @@ where }; self.provider - .enabled(map_level(event.metadata().level()), keyword) + .enabled(event.metadata().level(), keyword) } } @@ -313,7 +313,7 @@ where }; if P::supports_enable_callback() { - if self.provider.enabled(map_level(metadata.level()), keyword) { + if self.provider.enabled(metadata.level(), keyword) { tracing::subscriber::Interest::always() } else { tracing::subscriber::Interest::never() @@ -338,7 +338,7 @@ where self.default_keyword }; - self.provider.enabled(map_level(metadata.level()), keyword) + self.provider.enabled(metadata.level(), keyword) } #[cfg(feature = "global_filter")] @@ -355,7 +355,7 @@ where }; self.provider - .enabled(map_level(event.metadata().level()), keyword) + .enabled(event.metadata().level(), keyword) } fn on_event(&self, event: &tracing::Event<'_>, ctx: tracing_subscriber::layer::Context<'_, S>) { @@ -381,7 +381,7 @@ where current_span, parent_span, name, - map_level(event.metadata().level()), + event.metadata().level(), keyword, tag, event, @@ -501,7 +501,7 @@ where &data.activity_id, &data.related_activity_id, &data.fields, - map_level(metadata.level()), + metadata.level(), keyword, tag, ); @@ -542,7 +542,7 @@ where &data.activity_id, &data.related_activity_id, &data.fields, - map_level(metadata.level()), + metadata.level(), keyword, tag, ); diff --git a/src/lib.rs b/src/lib.rs index 81c2628..77737d3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -82,19 +82,7 @@ mod statics; #[doc(hidden)] pub mod _details; -pub use layer::*; - -#[inline] -#[doc(hidden)] -pub const fn map_level(level: &tracing::Level) -> u8 { - match *level { - tracing::Level::ERROR => native::native_level::Error.as_int(), - tracing::Level::WARN => native::native_level::Warning.as_int(), - tracing::Level::INFO => native::native_level::Informational.as_int(), - tracing::Level::DEBUG => native::native_level::Verbose.as_int(), - tracing::Level::TRACE => native::native_level::Verbose.as_int() + 1, - } -} +pub use layer::LayerBuilder; #[macro_export] macro_rules! etw_event { diff --git a/src/native/common_schema/etw_cs.rs b/src/native/common_schema/etw_cs.rs index 9c83101..b728eb3 100644 --- a/src/native/common_schema/etw_cs.rs +++ b/src/native/common_schema/etw_cs.rs @@ -66,6 +66,17 @@ impl CommonSchemaProvider { fn get_provider(self: Pin<&Self>) -> Pin<&tracelogging_dynamic::Provider> { unsafe { self.map_unchecked(|s| &s.provider) } } + + #[inline] + const fn map_level(level: &tracing_core::Level) -> tracelogging::Level { + match *level { + tracing_core::Level::ERROR => tracelogging::Level::Error, + tracing_core::Level::WARN => tracelogging::Level::Warning, + tracing_core::Level::INFO => tracelogging::Level::Informational, + tracing_core::Level::DEBUG => tracelogging::Level::Verbose, + tracing_core::Level::TRACE => tracelogging::Level::from_int(tracelogging::Level::Verbose.as_int() + 1), + } + } } impl crate::native::ProviderTypes for CommonSchemaProvider { @@ -114,9 +125,9 @@ impl crate::native::EventWriter for CommonSchemaProvider { } #[inline] - fn enabled(&self, level: u8, keyword: u64) -> bool { + fn enabled(&self, level: &tracing_core::Level, keyword: u64) -> bool { self.provider - .enabled(tracelogging::Level::from_int(level), keyword) + .enabled(Self::map_level(level), keyword) } fn span_start<'a, 'b, R>( @@ -126,7 +137,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { _activity_id: &[u8; 16], _related_activity_id: &[u8; 16], _fields: &'b [crate::values::FieldValueIndex], - _level: u8, + _level: &tracing_core::Level, _keyword: u64, _event_tag: u32, ) where @@ -141,7 +152,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { _activity_id: &[u8; 16], _related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -159,7 +170,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { EBW.with(|eb| { let mut eb = eb.borrow_mut(); - eb.reset(span_name, level.into(), keyword, event_tag); + eb.reset(span_name, Self::map_level(level), keyword, event_tag); eb.opcode(Opcode::Info); // Promoting values from PartC to PartA extensions is apparently just a draft spec @@ -251,7 +262,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { current_span: u64, _parent_span: u64, event_name: &str, - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, event: &tracing::Event<'_>, @@ -259,7 +270,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { EBW.with(|eb| { let mut eb = eb.borrow_mut(); - eb.reset(event_name, level.into(), keyword, event_tag); + eb.reset(event_name, Self::map_level(level), keyword, event_tag); eb.opcode(Opcode::Info); // Promoting values from PartC to PartA extensions is apparently just a draft spec diff --git a/src/native/common_schema/user_events_cs.rs b/src/native/common_schema/user_events_cs.rs index 06a0c1b..8e750dc 100644 --- a/src/native/common_schema/user_events_cs.rs +++ b/src/native/common_schema/user_events_cs.rs @@ -1,4 +1,4 @@ -use crate::{map_level, values::*}; +use crate::values::*; use eventheader::*; use eventheader_dynamic::EventBuilder; use std::{ @@ -92,6 +92,17 @@ impl CommonSchemaProvider { fn get_provider(self: Pin<&Self>) -> Pin<&std::sync::RwLock> { unsafe { self.map_unchecked(|s| &s.provider) } } + + #[inline] + const fn map_level(level: &tracing_core::Level) -> eventheader_dynamic::Level { + match *level { + tracing_core::Level::ERROR => eventheader_dynamic::Level::Error, + tracing_core::Level::WARN => eventheader_dynamic::Level::Warning, + tracing_core::Level::INFO => eventheader_dynamic::Level::Informational, + tracing_core::Level::DEBUG => eventheader_dynamic::Level::Verbose, + tracing_core::Level::TRACE => eventheader_dynamic::Level::from_int(eventheader_dynamic::Level::Verbose.as_int() + 1), + } + } } impl crate::native::EventWriter for CommonSchemaProvider { @@ -112,45 +123,45 @@ impl crate::native::EventWriter for CommonSchemaProvider { for event in &*crate::statics::EVENT_METADATA { provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::ERROR)), + Self::map_level(&tracing::Level::ERROR), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::WARN)), + Self::map_level(&tracing::Level::WARN), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::INFO)), + Self::map_level(&tracing::Level::INFO), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::DEBUG)), + Self::map_level(&tracing::Level::DEBUG), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::TRACE)), + Self::map_level(&tracing::Level::TRACE), event.kw, ); } provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::ERROR)), + Self::map_level(&tracing::Level::ERROR), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::WARN)), + Self::map_level(&tracing::Level::WARN), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::INFO)), + Self::map_level(&tracing::Level::INFO), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::DEBUG)), + Self::map_level(&tracing::Level::DEBUG), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::TRACE)), + Self::map_level(&tracing::Level::TRACE), default_keyword, ); @@ -160,12 +171,12 @@ impl crate::native::EventWriter for CommonSchemaProvider { } #[inline] - fn enabled(&self, level: u8, keyword: u64) -> bool { + fn enabled(&self, level: &tracing_core::Level, keyword: u64) -> bool { let es = self .provider .read() .unwrap() - .find_set(eventheader_dynamic::Level::from_int(level), keyword); + .find_set(Self::map_level(level), keyword); if let Some(s) = es { s.enabled() } else { false } } @@ -176,7 +187,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { _activity_id: &[u8; 16], _related_activity_id: &[u8; 16], _fields: &'b [crate::values::FieldValueIndex], - _level: u8, + _level: &tracing_core::Level, _keyword: u64, _event_tag: u32, ) where @@ -191,7 +202,7 @@ impl crate::native::EventWriter for CommonSchemaProvider { _activity_id: &[u8; 16], _related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -206,10 +217,10 @@ impl crate::native::EventWriter for CommonSchemaProvider { span_id.assume_init() }; - let es = if let Some(es) = self.find_set(level.into(), keyword) { + let es = if let Some(es) = self.find_set(Self::map_level(level), keyword) { es } else { - self.register_set(level.into(), keyword) + self.register_set(Self::map_level(level), keyword) }; EBW.with(|eb| { @@ -307,15 +318,15 @@ impl crate::native::EventWriter for CommonSchemaProvider { current_span: u64, _parent_span: u64, event_name: &str, - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, event: &tracing::Event<'_>, ) { - let es = if let Some(es) = self.find_set(level.into(), keyword) { + let es = if let Some(es) = self.find_set(Self::map_level(level), keyword) { es } else { - self.register_set(level.into(), keyword) + self.register_set(Self::map_level(level), keyword) }; EBW.with(|eb| { diff --git a/src/native/etw.rs b/src/native/etw.rs index ad82f43..55c410a 100644 --- a/src/native/etw.rs +++ b/src/native/etw.rs @@ -108,6 +108,17 @@ impl Provider { fn get_provider(self: Pin<&Self>) -> Pin<&tracelogging_dynamic::Provider> { unsafe { self.map_unchecked(|s| &s.provider) } } + + #[inline] + const fn map_level(level: &tracing_core::Level) -> tracelogging::Level { + match *level { + tracing_core::Level::ERROR => tracelogging::Level::Error, + tracing_core::Level::WARN => tracelogging::Level::Warning, + tracing_core::Level::INFO => tracelogging::Level::Informational, + tracing_core::Level::DEBUG => tracelogging::Level::Verbose, + tracing_core::Level::TRACE => tracelogging::Level::from_int(tracelogging::Level::Verbose.as_int() + 1), + } + } } impl super::EventWriter for Provider { @@ -142,9 +153,9 @@ impl super::EventWriter for Provider { } #[inline] - fn enabled(&self, level: u8, keyword: u64) -> bool { + fn enabled(&self, level: &tracing_core::Level, keyword: u64) -> bool { self.provider - .enabled(tracelogging::Level::from_int(level), keyword) + .enabled(Self::map_level(level), keyword) } fn span_start<'a, 'b, R>( @@ -154,7 +165,7 @@ impl super::EventWriter for Provider { activity_id: &[u8; 16], related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -165,7 +176,7 @@ impl super::EventWriter for Provider { EBW.with(|eb| { let mut eb = eb.borrow_mut(); - eb.reset(span_name, level.into(), keyword, event_tag); + eb.reset(span_name, Self::map_level(level), keyword, event_tag); eb.opcode(Opcode::Start); eb.add_systemtime( @@ -210,7 +221,7 @@ impl super::EventWriter for Provider { activity_id: &[u8; 16], related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -221,7 +232,7 @@ impl super::EventWriter for Provider { EBW.with(|eb| { let mut eb = eb.borrow_mut(); - eb.reset(span_name, level.into(), keyword, event_tag); + eb.reset(span_name, Self::map_level(level), keyword, event_tag); eb.opcode(Opcode::Stop); eb.add_systemtime( @@ -265,7 +276,7 @@ impl super::EventWriter for Provider { current_span: u64, parent_span: u64, event_name: &str, - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, event: &tracing::Event<'_>, @@ -291,7 +302,7 @@ impl super::EventWriter for Provider { EBW.with(|eb| { let mut eb = eb.borrow_mut(); - eb.reset(event_name, level.into(), keyword, event_tag); + eb.reset(event_name, Self::map_level(level), keyword, event_tag); eb.opcode(Opcode::Info); eb.add_systemtime( diff --git a/src/native/mod.rs b/src/native/mod.rs index 5accccc..8a2a13a 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -35,11 +35,6 @@ pub(crate) use tracelogging_dynamic::Guid as native_guid; #[cfg(target_os = "linux")] pub(crate) use eventheader::Guid as native_guid; -#[cfg(not(target_os = "linux"))] -pub(crate) use tracelogging_dynamic::Level as native_level; -#[cfg(target_os = "linux")] -pub(crate) use eventheader::Level as native_level; - #[doc(hidden)] pub struct GuidWrapper(u128); @@ -100,7 +95,7 @@ pub trait EventWriter { where for<'a> &'a G: Into; - fn enabled(&self, level: u8, keyword: u64) -> bool; + fn enabled(&self, level: &tracing_core::Level, keyword: u64) -> bool; #[allow(clippy::too_many_arguments)] fn span_start<'a, 'b, R>( @@ -110,7 +105,7 @@ pub trait EventWriter { activity_id: &[u8; 16], related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -124,7 +119,7 @@ pub trait EventWriter { activity_id: &[u8; 16], related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -137,7 +132,7 @@ pub trait EventWriter { current_span: u64, parent_span: u64, event_name: &str, - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, event: &tracing::Event<'_>, diff --git a/src/native/noop.rs b/src/native/noop.rs index a07a22a..736927a 100644 --- a/src/native/noop.rs +++ b/src/native/noop.rs @@ -46,7 +46,7 @@ impl crate::native::EventWriter for Provider { } #[inline(always)] - fn enabled(&self, _level: u8, _keyword: u64) -> bool { + fn enabled(&self, _level: &tracing_core::Level, _keyword: u64) -> bool { false } @@ -57,7 +57,7 @@ impl crate::native::EventWriter for Provider { _activity_id: &[u8; 16], _related_activity_id: &[u8; 16], _fields: &'b [crate::values::FieldValueIndex], - _level: u8, + _level: &tracing_core::Level, _keyword: u64, _event_tag: u32, ) where @@ -72,7 +72,7 @@ impl crate::native::EventWriter for Provider { _activity_id: &[u8; 16], _related_activity_id: &[u8; 16], _fields: &'b [crate::values::FieldValueIndex], - _level: u8, + _level: &tracing_core::Level, _keyword: u64, _event_tag: u32, ) where @@ -86,7 +86,7 @@ impl crate::native::EventWriter for Provider { _current_span: u64, _parent_span: u64, _event_name: &str, - _level: u8, + _level: &tracing_core::Level, _keyword: u64, _event_tag: u32, _event: &tracing::Event<'_>, diff --git a/src/native/user_events.rs b/src/native/user_events.rs index 97e8b35..fabee32 100644 --- a/src/native/user_events.rs +++ b/src/native/user_events.rs @@ -1,4 +1,4 @@ -use crate::{map_level, values::*}; +use crate::values::*; use crate::statics::GLOBAL_ACTIVITY_SEED; use eventheader::*; use eventheader_dynamic::EventBuilder; @@ -99,6 +99,17 @@ impl Provider { fn get_provider(self: Pin<&Self>) -> Pin<&std::sync::RwLock> { unsafe { self.map_unchecked(|s| &s.provider) } } + + #[inline] + const fn map_level(level: &tracing_core::Level) -> eventheader_dynamic::Level { + match *level { + tracing_core::Level::ERROR => eventheader_dynamic::Level::Error, + tracing_core::Level::WARN => eventheader_dynamic::Level::Warning, + tracing_core::Level::INFO => eventheader_dynamic::Level::Informational, + tracing_core::Level::DEBUG => eventheader_dynamic::Level::Verbose, + tracing_core::Level::TRACE => eventheader_dynamic::Level::from_int(eventheader_dynamic::Level::Verbose.as_int() + 1), + } + } } impl crate::native::EventWriter for Provider { @@ -119,45 +130,45 @@ impl crate::native::EventWriter for Provider { for event in &*crate::statics::EVENT_METADATA { provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::ERROR)), + Self::map_level(&tracing::Level::ERROR), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::WARN)), + Self::map_level(&tracing::Level::WARN), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::INFO)), + Self::map_level(&tracing::Level::INFO), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::DEBUG)), + Self::map_level(&tracing::Level::DEBUG), event.kw, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::TRACE)), + Self::map_level(&tracing::Level::TRACE), event.kw, ); } provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::ERROR)), + Self::map_level(&tracing::Level::ERROR), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::WARN)), + Self::map_level(&tracing::Level::WARN), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::INFO)), + Self::map_level(&tracing::Level::INFO), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::DEBUG)), + Self::map_level(&tracing::Level::DEBUG), default_keyword, ); provider.register_set( - eventheader_dynamic::Level::from_int(map_level(&tracing::Level::TRACE)), + Self::map_level(&tracing::Level::TRACE), default_keyword, ); @@ -167,12 +178,12 @@ impl crate::native::EventWriter for Provider { } #[inline] - fn enabled(&self, level: u8, keyword: u64) -> bool { + fn enabled(&self, level: &tracing_core::Level, keyword: u64) -> bool { let es = self .provider .read() .unwrap() - .find_set(eventheader_dynamic::Level::from_int(level), keyword); + .find_set(Self::map_level(level), keyword); if let Some(s) = es { s.enabled() } else { false } } @@ -183,7 +194,7 @@ impl crate::native::EventWriter for Provider { activity_id: &[u8; 16], related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -191,10 +202,10 @@ impl crate::native::EventWriter for Provider { { let span_name = span.name(); - let es = if let Some(es) = self.find_set(level.into(), keyword) { + let es = if let Some(es) = self.find_set(Self::map_level(level), keyword) { es } else { - self.register_set(level.into(), keyword) + self.register_set(Self::map_level(level), keyword) }; EBW.with(|eb| { @@ -246,7 +257,7 @@ impl crate::native::EventWriter for Provider { activity_id: &[u8; 16], related_activity_id: &[u8; 16], fields: &'b [crate::values::FieldValueIndex], - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, ) where @@ -254,10 +265,10 @@ impl crate::native::EventWriter for Provider { { let span_name = span.name(); - let es = if let Some(es) = self.find_set(level.into(), keyword) { + let es = if let Some(es) = self.find_set(Self::map_level(level), keyword) { es } else { - self.register_set(level.into(), keyword) + self.register_set(Self::map_level(level), keyword) }; EBW.with(|eb| { @@ -309,15 +320,15 @@ impl crate::native::EventWriter for Provider { current_span: u64, parent_span: u64, event_name: &str, - level: u8, + level: &tracing_core::Level, keyword: u64, event_tag: u32, event: &tracing::Event<'_>, ) { - let es = if let Some(es) = self.find_set(level.into(), keyword) { + let es = if let Some(es) = self.find_set(Self::map_level(level), keyword) { es } else { - self.register_set(level.into(), keyword) + self.register_set(Self::map_level(level), keyword) }; let mut activity_id: [u8; 16] = *GLOBAL_ACTIVITY_SEED;