Enum flexi_logger::Criterion[][src]

pub enum Criterion {
    Size(u64),
    Age(Age),
    AgeOrSize(Ageu64),
}

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 Linux 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 linux, for different reasons.

To minimize the impact on age-based file-rotation, flexi_logger uses on Windows and linux 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 Linux

std::fs::metadata.created() returns Err, because linux does not maintain a created-at-timestamp.

AgeOrSize(Ageu64)

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

impl Clone for Criterion[src]

impl Copy for Criterion[src]

impl Debug for Criterion[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.