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§
source§impl RollingFileAppender
impl RollingFileAppender
sourcepub fn new(
rotation: Rotation,
directory: impl AsRef<Path>,
file_name_prefix: impl AsRef<Path>
) -> RollingFileAppender ⓘ
pub fn new( rotation: Rotation, directory: impl AsRef<Path>, file_name_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:
Examples
use tracing_appender::rolling::{RollingFileAppender, Rotation};
let file_appender = RollingFileAppender::new(Rotation::HOURLY, "/some/directory", "prefix.log");Trait Implementations§
source§impl Debug for RollingFileAppender
impl Debug for RollingFileAppender
source§impl<'a> MakeWriter<'a> for RollingFileAppender
impl<'a> MakeWriter<'a> for RollingFileAppender
§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 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