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>
impl<W: for<'a> MakeWriter<'a> + 'static> BunyanFormattingLayer<W>
sourcepub fn new(name: String, make_writer: W) -> Self
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 aWrite
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());
sourcepub fn with_default_fields(
name: String,
make_writer: W,
default_fields: HashMap<String, Value>
) -> Self
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,
);
sourcepub fn skip_fields<Fields, Field>(
self,
fields: Fields
) -> Result<Self, SkipFieldError>where
Fields: Iterator<Item = Field>,
Field: Into<String>,
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,
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>)
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>)
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>)
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)
fn on_register_dispatch(&self, collector: &Dispatch)
Performs late initialization when installing this layer as a
Subscriber
. Read moresource§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_record(&self, _span: &Id, _values: &Record<'_>, _ctx: Context<'_, S>)
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>)
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
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>)
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>)
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>)
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<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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more