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 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,
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