Struct tracing_appender::rolling::RollingFileAppender
source · [−]pub struct RollingFileAppender { /* private fields */ }
Expand description
A file appender with the ability to rotate log files at a fixed schedule.
RollingFileAppender
implements the std:io::Write
trait and will
block on write operations. It may be used with NonBlocking
to perform
writes without blocking the current thread.
Additionally, RollingFileAppender
also implements the MakeWriter
trait from tracing-appender
, so it may also be used
directly, without NonBlocking
.
Examples
Rolling a log file once every hour:
let file_appender = tracing_appender::rolling::hourly("/some/directory", "prefix");
Combining a RollingFileAppender
with another MakeWriter
implementation:
use tracing_subscriber::fmt::writer::MakeWriterExt;
// Log all events to a rolling log file.
let logfile = tracing_appender::rolling::hourly("/logs", "myapp-logs");
// Log `INFO` and above to stdout.
let stdout = std::io::stdout.with_max_level(tracing::Level::INFO);
tracing_subscriber::fmt()
// Combine the stdout and log file `MakeWriter`s into one
// `MakeWriter` that writes to both
.with_writer(stdout.and(logfile))
.init();
Implementations
sourceimpl RollingFileAppender
impl RollingFileAppender
sourcepub fn new(
rotation: Rotation,
directory: impl AsRef<Path>,
file_name_prefix: impl AsRef<Path>
) -> RollingFileAppenderⓘNotable traits for RollingFileAppenderimpl Write for RollingFileAppender
pub fn new(
rotation: Rotation,
directory: impl AsRef<Path>,
file_name_prefix: impl AsRef<Path>
) -> RollingFileAppenderⓘNotable traits for RollingFileAppenderimpl Write for RollingFileAppender
Creates a new RollingFileAppender
.
A RollingFileAppender
will have a fixed rotation whose frequency is
defined by Rotation
. The directory
and
file_name_prefix
arguments determine the location and file name’s prefix
of the log file. RollingFileAppender
will automatically append the current date
and hour (UTC format) to the file name.
Alternatively, a RollingFileAppender
can be constructed using one of the following helpers:
Examples
use tracing_appender::rolling::{RollingFileAppender, Rotation};
let file_appender = RollingFileAppender::new(Rotation::HOURLY, "/some/directory", "prefix.log");
Trait Implementations
sourceimpl Debug for RollingFileAppender
impl Debug for RollingFileAppender
sourceimpl<'a> MakeWriter<'a> for RollingFileAppender
impl<'a> MakeWriter<'a> for RollingFileAppender
type Writer = RollingWriter<'a>
type Writer = RollingWriter<'a>
The concrete io::Write
implementation returned by make_writer
. Read more
sourcefn make_writer(&'a self) -> Self::Writer
fn make_writer(&'a self) -> Self::Writer
sourceimpl Write for RollingFileAppender
impl Write for RollingFileAppender
sourcefn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
sourcefn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
sourcefn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
Determines if this Write
r has an efficient write_vectored
implementation. Read more
1.0.0 · sourcefn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
sourcefn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations
impl RefUnwindSafe for RollingFileAppender
impl Send for RollingFileAppender
impl Sync for RollingFileAppender
impl Unpin for RollingFileAppender
impl UnwindSafe for RollingFileAppender
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<'a, M> MakeWriterExt<'a> for M where
M: MakeWriter<'a>,
impl<'a, M> MakeWriterExt<'a> for M where
M: MakeWriter<'a>,
sourcefn with_max_level(self, level: Level) -> WithMaxLevel<Self>
fn with_max_level(self, level: Level) -> WithMaxLevel<Self>
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 more
sourcefn with_min_level(self, level: Level) -> WithMinLevel<Self>
fn with_min_level(self, level: Level) -> WithMinLevel<Self>
Wraps self
and returns a MakeWriter
that will only write output
for events at or above the provided verbosity Level
. Read more
sourcefn with_filter<F>(self, filter: F) -> WithFilter<Self, F> where
F: Fn(&Metadata<'_>) -> bool,
fn with_filter<F>(self, filter: F) -> WithFilter<Self, F> where
F: Fn(&Metadata<'_>) -> bool,
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 more
sourcefn and<B>(self, other: B) -> Tee<Self, B> where
B: MakeWriter<'a>,
fn and<B>(self, other: B) -> Tee<Self, B> where
B: MakeWriter<'a>,
Combines self
with another type implementing MakeWriter
, returning
a new MakeWriter
that produces writers that write to both
outputs. Read more
sourcefn or_else<W, B>(self, other: B) -> OrElse<Self, B> where
Self: MakeWriter<'a, Writer = EitherWriter<W, Sink>>,
B: MakeWriter<'a>,
W: Write,
fn or_else<W, B>(self, other: B) -> OrElse<Self, B> where
Self: MakeWriter<'a, Writer = EitherWriter<W, Sink>>,
B: MakeWriter<'a>,
W: Write,
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