use crate::appender::{FastLogRecord, LogAppender};
use crate::consts::LogSize;
use crate::error::LogError;
use crate::plugin::file_split::{FileSplitAppender, RollingType, KeepType, RawFile, Rolling};
use crate::plugin::packer::LogPacker;
pub struct FileLoopAppender {
file: FileSplitAppender,
}
impl FileLoopAppender {
pub fn new(log_file_path: &str, size: LogSize) -> Result<FileLoopAppender, LogError> {
Ok(Self {
file: FileSplitAppender::new::<RawFile>(
log_file_path,
Box::new(Rolling::new(RollingType::BySize(size))),
Box::new(KeepType::KeepNum(1)),
Box::new(LogPacker {}),
)?,
})
}
}
impl LogAppender for FileLoopAppender {
fn do_logs(&mut self, records: &[FastLogRecord]) {
self.file.do_logs(records);
}
}