Struct sc_tracing::ProfilingLayer
source · pub struct ProfilingLayer { /* private fields */ }
Expand description
Responsible for assigning ids to new spans, which are not re-used.
Implementations§
source§impl ProfilingLayer
impl ProfilingLayer
sourcepub fn new(receiver: TracingReceiver, targets: &str) -> Self
pub fn new(receiver: TracingReceiver, targets: &str) -> Self
Takes a TracingReceiver
and a comma separated list of targets,
either with a level: “pallet=trace,frame=debug”
or without: “pallet,frame” in which case the level defaults to trace
.
wasm_tracing indicates whether to enable wasm traces
Examples found in repository?
src/logging/mod.rs (line 278)
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
pub fn init(self) -> Result<()> {
if let Some((tracing_receiver, profiling_targets)) = self.profiling {
if self.log_reloading {
let subscriber = prepare_subscriber(
&self.directives,
Some(&profiling_targets),
self.force_colors,
self.detailed_output,
|builder| enable_log_reloading!(builder),
)?;
let mut profiling =
crate::ProfilingLayer::new(tracing_receiver, &profiling_targets);
self.custom_profiler
.into_iter()
.for_each(|profiler| profiling.add_handler(profiler));
tracing::subscriber::set_global_default(subscriber.with(profiling))?;
Ok(())
} else {
let subscriber = prepare_subscriber(
&self.directives,
Some(&profiling_targets),
self.force_colors,
self.detailed_output,
|builder| builder,
)?;
let mut profiling =
crate::ProfilingLayer::new(tracing_receiver, &profiling_targets);
self.custom_profiler
.into_iter()
.for_each(|profiler| profiling.add_handler(profiler));
tracing::subscriber::set_global_default(subscriber.with(profiling))?;
Ok(())
}
} else if self.log_reloading {
let subscriber = prepare_subscriber(
&self.directives,
None,
self.force_colors,
self.detailed_output,
|builder| enable_log_reloading!(builder),
)?;
tracing::subscriber::set_global_default(subscriber)?;
Ok(())
} else {
let subscriber = prepare_subscriber(
&self.directives,
None,
self.force_colors,
self.detailed_output,
|builder| builder,
)?;
tracing::subscriber::set_global_default(subscriber)?;
Ok(())
}
}
sourcepub fn new_with_handler(
trace_handler: Box<dyn TraceHandler>,
targets: &str
) -> Self
pub fn new_with_handler(
trace_handler: Box<dyn TraceHandler>,
targets: &str
) -> Self
Allows use of a custom TraceHandler to create a new instance of ProfilingSubscriber.
Takes a comma separated list of targets,
either with a level, eg: “pallet=trace”
or without: “pallet” in which case the level defaults to trace
.
wasm_tracing indicates whether to enable wasm traces
sourcepub fn add_handler(&mut self, trace_handler: Box<dyn TraceHandler>)
pub fn add_handler(&mut self, trace_handler: Box<dyn TraceHandler>)
Attach additional handlers to allow handling of custom events/spans.
Examples found in repository?
src/logging/mod.rs (line 282)
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
pub fn init(self) -> Result<()> {
if let Some((tracing_receiver, profiling_targets)) = self.profiling {
if self.log_reloading {
let subscriber = prepare_subscriber(
&self.directives,
Some(&profiling_targets),
self.force_colors,
self.detailed_output,
|builder| enable_log_reloading!(builder),
)?;
let mut profiling =
crate::ProfilingLayer::new(tracing_receiver, &profiling_targets);
self.custom_profiler
.into_iter()
.for_each(|profiler| profiling.add_handler(profiler));
tracing::subscriber::set_global_default(subscriber.with(profiling))?;
Ok(())
} else {
let subscriber = prepare_subscriber(
&self.directives,
Some(&profiling_targets),
self.force_colors,
self.detailed_output,
|builder| builder,
)?;
let mut profiling =
crate::ProfilingLayer::new(tracing_receiver, &profiling_targets);
self.custom_profiler
.into_iter()
.for_each(|profiler| profiling.add_handler(profiler));
tracing::subscriber::set_global_default(subscriber.with(profiling))?;
Ok(())
}
} else if self.log_reloading {
let subscriber = prepare_subscriber(
&self.directives,
None,
self.force_colors,
self.detailed_output,
|builder| enable_log_reloading!(builder),
)?;
tracing::subscriber::set_global_default(subscriber)?;
Ok(())
} else {
let subscriber = prepare_subscriber(
&self.directives,
None,
self.force_colors,
self.detailed_output,
|builder| builder,
)?;
tracing::subscriber::set_global_default(subscriber)?;
Ok(())
}
}
Trait Implementations§
source§impl<S> Layer<S> for ProfilingLayerwhere
S: Subscriber + for<'span> LookupSpan<'span>,
impl<S> Layer<S> for ProfilingLayerwhere
S: Subscriber + for<'span> LookupSpan<'span>,
source§fn new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)
fn new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)
Notifies this layer that a new span was constructed with the given
Attributes
and Id
.source§fn on_record(&self, id: &Id, values: &Record<'_>, ctx: Context<'_, S>)
fn on_record(&self, id: &Id, values: &Record<'_>, ctx: Context<'_, S>)
Notifies this layer that a span with the given
Id
recorded the given
values
.source§fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)
Notifies this layer that an event has occurred.
source§fn on_enter(&self, span: &Id, ctx: Context<'_, S>)
fn on_enter(&self, span: &Id, ctx: Context<'_, S>)
Notifies this layer that a span with the given ID was entered.
source§fn on_exit(&self, span: &Id, ctx: Context<'_, S>)
fn on_exit(&self, span: &Id, ctx: Context<'_, S>)
Notifies this layer that the span with the given ID was exited.
source§fn on_close(&self, _span: Id, _ctx: Context<'_, S>)
fn on_close(&self, _span: Id, _ctx: Context<'_, S>)
Notifies this layer that the span with the given ID has been closed.
source§fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest
fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest
Registers a new callsite with this layer, returning whether or not
the layer is interested in being notified about the callsite, similarly
to
Subscriber::register_callsite
. Read moresource§fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool
fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool
Returns
true
if this layer is interested in a span or event with the
given metadata
in the current Context
, similarly to
Subscriber::enabled
. Read moresource§fn on_follows_from(&self, _span: &Id, _follows: &Id, _ctx: Context<'_, S>)
fn on_follows_from(&self, _span: &Id, _follows: &Id, _ctx: Context<'_, S>)
Notifies this layer that a span with the ID
span
recorded that it
follows from the span with the ID follows
.source§fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)
fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)
Notifies this layer that a span ID has been cloned, and that the
subscriber returned a different ID.
source§fn and_then<L>(self, layer: L) -> Layered<L, Self, S>where
L: Layer<S>,
Self: Sized,
fn and_then<L>(self, layer: L) -> Layered<L, Self, S>where
L: Layer<S>,
Self: Sized,
Composes this layer around the given
Layer
, returning a Layered
struct implementing Layer
. Read moresource§fn with_subscriber(self, inner: S) -> Layered<Self, S, S>where
Self: Sized,
fn with_subscriber(self, inner: S) -> Layered<Self, S, S>where
Self: Sized,
Composes this
Layer
with the given Subscriber
, returning a
Layered
struct that implements Subscriber
. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for ProfilingLayer
impl Send for ProfilingLayer
impl Sync for ProfilingLayer
impl Unpin for ProfilingLayer
impl !UnwindSafe for ProfilingLayer
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.