pub struct BunyanFormattingLayer<W: for<'a> MakeWriter<'a> + 'static> { /* private fields */ }
Expand description

This layer is exclusively concerned with formatting information using the Bunyan format. It relies on the upstream JsonStorageLayer to get access to the fields attached to each span.

Implementations§

source§

impl<W: for<'a> MakeWriter<'a> + 'static> BunyanFormattingLayer<W>

source

pub fn new(name: String, make_writer: W) -> Self

Create a new BunyanFormattingLayer.

You have to specify:

  • a name, which will be attached to all formatted records according to the Bunyan format;
  • a make_writer, which will be used to get a Write instance to write formatted records to.
Using stdout
use tracing_bunyan_formatter::BunyanFormattingLayer;

let formatting_layer = BunyanFormattingLayer::new("tracing_example".into(), std::io::stdout);

If you prefer, you can use closure syntax:

use tracing_bunyan_formatter::BunyanFormattingLayer;

let formatting_layer = BunyanFormattingLayer::new("tracing_example".into(), || std::io::stdout());
source

pub fn with_default_fields( name: String, make_writer: W, default_fields: HashMap<String, Value> ) -> Self

Add default fields to all formatted records.

use std::collections::HashMap;
use serde_json::json;
use tracing_bunyan_formatter::BunyanFormattingLayer;

let mut default_fields = HashMap::new();
default_fields.insert("custom_field".to_string(), json!("custom_value"));
let formatting_layer = BunyanFormattingLayer::with_default_fields(
    "test".into(),
    std::io::stdout,
    default_fields,
);
source

pub fn skip_fields<Fields, Field>( self, fields: Fields ) -> Result<Self, SkipFieldError>where Fields: Iterator<Item = Field>, Field: Into<String>,

Add fields to skip when formatting with this layer.

It returns an error if you try to skip a required core Bunyan field (e.g. name). You can skip optional core Bunyan fields (e.g. line, file, target).

use tracing_bunyan_formatter::BunyanFormattingLayer;

let skipped_fields = vec!["skipped"];
let formatting_layer = BunyanFormattingLayer::new("test".into(), std::io::stdout)
    .skip_fields(skipped_fields.into_iter())
    .expect("One of the specified fields cannot be skipped");

Trait Implementations§

source§

impl<S, W> Layer<S> for BunyanFormattingLayer<W>where S: Subscriber + for<'a> LookupSpan<'a>, W: for<'a> MakeWriter<'a> + 'static,

source§

fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
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_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, collector: &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.
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_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, 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

Auto Trait Implementations§

§

impl<W> RefUnwindSafe for BunyanFormattingLayer<W>where W: RefUnwindSafe,

§

impl<W> Send for BunyanFormattingLayer<W>where W: Send,

§

impl<W> Sync for BunyanFormattingLayer<W>where W: Sync,

§

impl<W> Unpin for BunyanFormattingLayer<W>where W: Unpin,

§

impl<W> UnwindSafe for BunyanFormattingLayer<W>where W: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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