7 个版本
0.2.3 | 2023年10月15日 |
---|---|
0.2.2 | 2023年10月10日 |
0.1.2 | 2023年10月9日 |
#714 在 数据结构
每月 77 次下载
35KB
534 代码行
Filetrack
Filetrack 是一个类似于 Filebeat 和其他软件中使用的机制的日志持久读取库。它提供了一些用于处理 IO 的有用原语,其主要目的是用于自定义日志处理器的实现。
-
Multireader
允许您像处理单个缓冲区一样处理多个读取器的列表。 -
InodeAwareReader
允许您处理轮转日志并在其中维护持久偏移量。持久化方案由用户实现。 -
TrackedReader
允许您从轮转文件中读取日志或其他内容,并在重启时在文件内部持久化偏移量,以便您可以使用现成的结构。
示例
逐行读取文件,同时跟踪当前偏移量,以便您下次可以从上次离开的地方开始。请注意,此库不强制您使用此方案,您可以使用 InodeAwareReader
实现自己的持久化方案。
use filetrack::{TrackedReader, TrackedReaderError};
use std::io::BufRead;
// running this script will fetch and print new lines on each execution
fn main() -> Result<(), TrackedReaderError> {
let mut reader = TrackedReader::new("examples/file.txt", "examples/registry")?;
let mut input = String::new();
loop {
match reader.read_line(&mut input)? {
0 => break Ok(()),
_ => println!("read line: `{}`", input.trim_end()),
};
}
}
有关更多示例和工作原理,请参阅 文档。
依赖项
~0.6–1.3MB
~29K SLoC