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-subscriber, 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ยง
Sourceยงimpl RollingFileAppender
impl RollingFileAppender
Sourcepub fn new(
rotation: Rotation,
directory: impl AsRef<Path>,
filename_prefix: impl AsRef<Path>,
) -> RollingFileAppender โ
pub fn new( rotation: Rotation, directory: impl AsRef<Path>, filename_prefix: impl AsRef<Path>, ) -> 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:
Additional parameters can be configured using RollingFileAppender::builder.
ยงExamples
use tracing_appender::rolling::{RollingFileAppender, Rotation};
let file_appender = RollingFileAppender::new(Rotation::HOURLY, "/some/directory", "prefix.log");Sourcepub fn builder() -> Builder
pub fn builder() -> Builder
Returns a new Builder for configuring a RollingFileAppender.
The builder interface can be used to set additional configuration parameters when constructing a new appender.
Unlike RollingFileAppender::new, the Builder::build method
returns a Result rather than panicking when the appender cannot be
initialized. Therefore, the builder interface can also be used when
appender initialization errors should be handled gracefully.
ยงExamples
use tracing_appender::rolling::{RollingFileAppender, Rotation};
let file_appender = RollingFileAppender::builder()
.rotation(Rotation::HOURLY) // rotate log files once every hour
.filename_prefix("myapp") // log file names will be prefixed with `myapp.`
.filename_suffix("log") // log file names will be suffixed with `.log`
.build("/var/log") // try to build an appender that stores log files in `/var/log`
.expect("initializing rolling file appender failed");Trait Implementationsยง
Sourceยงimpl Debug for RollingFileAppender
impl Debug for RollingFileAppender
Sourceยงimpl<'a> MakeWriter<'a> for RollingFileAppender
impl<'a> MakeWriter<'a> for RollingFileAppender
Sourceยงtype Writer = RollingWriter<'a>
type Writer = RollingWriter<'a>
io::Write implementation returned by make_writer.Sourceยงimpl Write for RollingFileAppender
impl Write for RollingFileAppender
Sourceยงfn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Sourceยงfn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Sourceยงfn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector #69941)1.0.0 ยท Sourceยงfn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Sourceยงfn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored #70436)Auto Trait Implementationsยง
impl !Freeze for RollingFileAppender
impl !RefUnwindSafe for RollingFileAppender
impl Send for RollingFileAppender
impl Sync for RollingFileAppender
impl Unpin for RollingFileAppender
impl UnwindSafe for RollingFileAppender
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
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<'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,
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 verbosethanLevel::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,
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>
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>,
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>
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