#io #logs #persistent #offset #reading #reader #processors

filetrack

持久的日志轮转读取和其他有用的 IO 功能

7 个版本

0.2.3 2023年10月15日
0.2.2 2023年10月10日
0.1.2 2023年10月9日

#714数据结构

Download history 2/week @ 2024-03-10 47/week @ 2024-03-31

每月 77 次下载

MIT 许可证

35KB
534 代码行

Filetrack

Rust Latest version Documentation License

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