Enum flexi_logger::Criterion
source · [−]Expand description
Criterion when to rotate the log file.
Used in Logger::rotate
.
Variants
Size(u64)
Rotate the log file when it exceeds the specified size in bytes.
Age(Age)
Rotate the log file when it has become older than the specified age.
Minor limitation
TL,DR
the combination of Logger::append()
with Criterion::Age
works OK, but not perfectly correct on Windows or unix
when the program is restarted.
Details
Applying the age criterion works fine while your program is running.
Ideally, we should also apply it to the rCURRENT file when the program is restarted
and you chose the Logger::append()
option.
Unfortunately, this does not work on Windows, and it does not work on unix, for different reasons.
To minimize the impact on age-based file-rotation,
flexi_logger
uses on Windows and unix its initialization time
rather than the real file property
as the created_at-info of an rCURRENT file that already exists, and the
current timestamp when file rotation happens during further execution.
Consequently, a left-over rCURRENT file from a previous program run will look newer
than it is, and will be used longer than it should be.
Issue on Windows
For compatibility with DOS (sic!), Windows magically transfers the created_at-info of a file that is deleted (or renamed) to its successor, when the recreation happens within some seconds [1].
If the file property were used by flexi_logger
,
the rCURRENT file would always appear to be as old as the
first one that ever was created - rotation by time would completely fail.
[1] https://superuser.com/questions/966490/windows-7-what-is-date-created-file-property-referring-to.
Issue on unix
std::fs::metadata.created()
returns Err
, because unix does not maintain a
created-at-timestamp.
AgeOrSize(Age, u64)
Rotate the file when it has either become older than the specified age, or when it has exceeded the specified size in bytes.
See documentation for Age and Size.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Criterion
impl Send for Criterion
impl Sync for Criterion
impl Unpin for Criterion
impl UnwindSafe for Criterion
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more