tracing_indicatif

Struct IndicatifLayer

Source
pub struct IndicatifLayer<S, F = DefaultFields> { /* private fields */ }
Expand description

The layer that handles creating and managing indicatif progress bars for active spans. This layer must be registered with your tracing subscriber to have any effect.

This layer performs no filtering on which spans to show progress bars for. It is expected one attaches filters to this layer to control which spans actually have progress bars generated for them. See filter::IndicatifFilter for a rudimentary filter.

Progress bars will be started the very first time a span is entered or when one of its child spans is entered for the first time, and will finish when the span is closed (including all child spans having closed).

Progress bars are emitted to stderr.

Under the hood, this just uses indicatif’s MultiProgress struct to manage individual ProgressBar instances per span.

Implementations§

Source§

impl<S> IndicatifLayer<S>
where S: Subscriber + for<'a> LookupSpan<'a>,

Source

pub fn new() -> Self

Spawns a progress bar for every tracing span that is received by this layer.

The default settings for this layer are 7 progress bars maximum and progress bars in the style of:

⠄ do_work{val=0}
⠄ do_work{val=1}
⠄ do_work{val=2}
  ↳ ⠴ do_sub_work{val=2}
  ↳ ⠴ do_sub_work{val=2}
⠄ do_work{val=3}
⠄ do_work{val=4}
...and 5 more not shown above.
Source§

impl<S, F> IndicatifLayer<S, F>

Source

pub fn get_fmt_writer(&self) -> IndicatifWriter<Stderr>

👎Deprecated since 0.2.3: use get_stderr_writer() instead
Source

pub fn get_stderr_writer(&self) -> IndicatifWriter<Stderr>

Returns the a writer for std::io::Stderr that ensures its output will not be clobbered by active progress bars.

Instead of eprintln!(...) prefer writeln!(indicatif_layer.get_stderr_writer(), ...) instead to ensure your output is not clobbered by active progress bars.

If one wishes tracing logs to be output to stderr, this should be passed into fmt::Layer::with_writer.

Source

pub fn get_stdout_writer(&self) -> IndicatifWriter<Stdout>

Returns the a writer for std::io::Stdout that ensures its output will not be clobbered by active progress bars.

Instead of println!(...) prefer writeln!(indicatif_layer.get_stdout_writer(), ...) instead to ensure your output is not clobbered by active progress bars.

If one wishes tracing logs to be output to stdout, this should be passed into fmt::Layer::with_writer.

Source

pub fn with_span_field_formatter<F2>( self, formatter: F2, ) -> IndicatifLayer<S, F2>
where F2: for<'writer> FormatFields<'writer> + 'static,

Set the formatter for span fields, the result of which will be available as the progress bar template key span_fields.

The default is the DefaultFields formatter.

Source

pub fn with_progress_style(self, style: ProgressStyle) -> Self

Override the style used for displayed progress bars.

Two additional keys are available for the progress bar template:

  • span_fields - the formatted string of this span’s fields
  • span_name - the name of the span
  • span_child_prefix - a prefix that increase in size according to the number of parents the span has.

The default template is {span_child_prefix}{spinner} {span_name}{{{span_fields}}}.

Source

pub fn with_span_child_prefix_indent(self, indent: &'static str) -> Self

Set the indent used to mark the “level” of a given child span’s progress bar.

For example, if the given span is two levels deep (iow has two parent spans with progress bars), and this is “ “, the {span_child_prefix} key for this span’s progress bar will be prefixed with “ “.

Source

pub fn with_span_child_prefix_symbol(self, symbol: &'static str) -> Self

Set the symbol used to denote this is a progress bar from a child span.

This is ultimately concatenated with the child prefix indent to make the span_child_prefix progress bar key.

Source

pub fn with_max_progress_bars( self, max_progress_bars: u64, footer_style: Option<ProgressStyle>, ) -> Self

Set the maximum number of progress bars that will be displayed, and the possible footer “progress bar” that displays when there are more progress bars than can be displayed.

footer_style dictates the appearance of the footer, and the footer will only appear if there are more progress bars than can be displayed. If it is None, no footer will be displayed. footer_style has the following keys available to it:

  • pending_progress_bars - the number of progress bars waiting to be shown
Source

pub fn with_tick_settings(self, tick_settings: TickSettings) -> Self

Configures how often progress bars are recalcuated and redrawn to the terminal.

Trait Implementations§

Source§

impl<S> Default for IndicatifLayer<S>
where S: Subscriber + for<'a> LookupSpan<'a>,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<S, F> Layer<S> for IndicatifLayer<S, F>
where S: Subscriber + for<'a> LookupSpan<'a>, F: for<'writer> FormatFields<'writer> + 'static,

Source§

fn on_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_enter(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the given ID was entered.
Source§

fn on_close(&self, id: Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID has been closed.
Source§

fn on_register_dispatch(&self, subscriber: &Dispatch)

Performs late initialization when installing this layer as a Subscriber. Read more
Source§

fn on_layer(&mut self, subscriber: &mut S)

Performs late initialization when attaching a Layer to a Subscriber. Read more
Source§

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 more
Source§

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 more
Source§

fn on_record(&self, _span: &Id, _values: &Record<'_>, _ctx: Context<'_, S>)

Notifies this layer that a span with the given Id recorded the given values.
Source§

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 event_enabled(&self, _event: &Event<'_>, _ctx: Context<'_, S>) -> bool

Called before on_event, to determine if on_event should be called. Read more
Source§

fn on_event(&self, _event: &Event<'_>, _ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
Source§

fn on_exit(&self, _id: &Id, _ctx: Context<'_, S>)

Notifies this layer that the span with the given ID was exited.
Source§

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,

Composes this layer around the given Layer, returning a Layered struct implementing Layer. Read more
Source§

fn with_subscriber(self, inner: S) -> Layered<Self, S>
where Self: Sized,

Composes this Layer with the given Subscriber, returning a Layered struct that implements Subscriber. Read more
Source§

fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
where Self: Sized, F: Filter<S>,

Combines self with a Filter, returning a Filtered layer. Read more
Source§

fn boxed(self) -> Box<dyn Layer<S> + Sync + Send>
where Self: Sized + Layer<S> + Send + Sync + 'static, S: Subscriber,

Erases the type of this Layer, returning a Boxed dyn Layer trait object. Read more

Auto Trait Implementations§

§

impl<S, F = DefaultFields> !Freeze for IndicatifLayer<S, F>

§

impl<S, F = DefaultFields> !RefUnwindSafe for IndicatifLayer<S, F>

§

impl<S, F> Send for IndicatifLayer<S, F>
where F: Send, S: Send,

§

impl<S, F> Sync for IndicatifLayer<S, F>
where F: Sync, S: Sync,

§

impl<S, F> Unpin for IndicatifLayer<S, F>
where F: Unpin, S: Unpin,

§

impl<S, F = DefaultFields> !UnwindSafe for IndicatifLayer<S, F>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more