pub struct BoxMakeWriter { /* private fields */ }
Expand description
A writer that erases the specific io::Write
and MakeWriter
types being used.
This is useful in cases where the concrete type of the writer cannot be known until runtime.
§Examples
A function that returns a Subscriber
that will write to either stdout or stderr:
fn dynamic_writer(use_stderr: bool) -> impl Subscriber {
let writer = if use_stderr {
BoxMakeWriter::new(std::io::stderr)
} else {
BoxMakeWriter::new(std::io::stdout)
};
tracing_subscriber::fmt().with_writer(writer).finish()
}
Implementations§
source§impl BoxMakeWriter
impl BoxMakeWriter
sourcepub fn new<M>(make_writer: M) -> BoxMakeWriter
pub fn new<M>(make_writer: M) -> BoxMakeWriter
Constructs a BoxMakeWriter
wrapping a type implementing MakeWriter
.
Trait Implementations§
source§impl Debug for BoxMakeWriter
impl Debug for BoxMakeWriter
source§impl<'a> MakeWriter<'a> for BoxMakeWriter
impl<'a> MakeWriter<'a> for BoxMakeWriter
source§type Writer = Box<dyn Write + 'a>
type Writer = Box<dyn Write + 'a>
The concrete
io::Write
implementation returned by make_writer
.source§fn make_writer(&'a self) -> <BoxMakeWriter as MakeWriter<'a>>::Writer
fn make_writer(&'a self) -> <BoxMakeWriter as MakeWriter<'a>>::Writer
source§fn make_writer_for(
&'a self,
meta: &Metadata<'_>,
) -> <BoxMakeWriter as MakeWriter<'a>>::Writer
fn make_writer_for( &'a self, meta: &Metadata<'_>, ) -> <BoxMakeWriter as MakeWriter<'a>>::Writer
Auto Trait Implementations§
impl Freeze for BoxMakeWriter
impl !RefUnwindSafe for BoxMakeWriter
impl Send for BoxMakeWriter
impl Sync for BoxMakeWriter
impl Unpin for BoxMakeWriter
impl !UnwindSafe for BoxMakeWriter
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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§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.source§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> DowncastSync for T
impl<T> DowncastSync for T
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> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<'a, M> MakeWriterExt<'a> for Mwhere
M: MakeWriter<'a>,
impl<'a, M> MakeWriterExt<'a> for Mwhere
M: MakeWriter<'a>,
source§fn with_max_level(self, level: Level) -> WithMaxLevel<Self>where
Self: Sized,
fn with_max_level(self, level: Level) -> WithMaxLevel<Self>where
Self: Sized,
Wraps
self
and returns a MakeWriter
that will only write output
for events at or below the provided verbosity Level
. For instance,
Level::TRACE
is considered to be _more verbosethan
Level::INFO`. Read moresource§fn with_min_level(self, level: Level) -> WithMinLevel<Self>where
Self: Sized,
fn with_min_level(self, level: Level) -> WithMinLevel<Self>where
Self: Sized,
Wraps
self
and returns a MakeWriter
that will only write output
for events at or above the provided verbosity Level
. Read moresource§fn with_filter<F>(self, filter: F) -> WithFilter<Self, F>
fn with_filter<F>(self, filter: F) -> WithFilter<Self, F>
Wraps
self
with a predicate that takes a span or event’s Metadata
and returns a bool
. The returned MakeWriter
’s
MakeWriter::make_writer_for
method will check the predicate to
determine if a writer should be produced for a given span or event. Read moresource§fn and<B>(self, other: B) -> Tee<Self, B> ⓘwhere
Self: Sized,
B: MakeWriter<'a>,
fn and<B>(self, other: B) -> Tee<Self, B> ⓘwhere
Self: Sized,
B: MakeWriter<'a>,
Combines
self
with another type implementing MakeWriter
, returning
a new MakeWriter
that produces writers that write to both
outputs. Read moresource§fn or_else<W, B>(self, other: B) -> OrElse<Self, B>
fn or_else<W, B>(self, other: B) -> OrElse<Self, B>
Combines
self
with another type implementing MakeWriter
, returning
a new MakeWriter
that calls other
’s make_writer
if self
’s
make_writer
returns OptionalWriter::none
. Read more