#log #logging #segment

commitlog

Sequential, disk-backed commit log library

13 releases

0.2.0 Nov 6, 2021
0.1.3 Mar 6, 2021
0.1.2 Jul 4, 2020
0.1.1 Aug 29, 2019
0.0.1 Nov 26, 2016

#498 in Data structures

Download history 26/week @ 2022-11-28 33/week @ 2022-12-05 47/week @ 2022-12-12 30/week @ 2022-12-19 25/week @ 2022-12-26 27/week @ 2023-01-02 34/week @ 2023-01-09 31/week @ 2023-01-16 39/week @ 2023-01-23 149/week @ 2023-01-30 51/week @ 2023-02-06 69/week @ 2023-02-13 152/week @ 2023-02-20 51/week @ 2023-02-27 55/week @ 2023-03-06 63/week @ 2023-03-13

344 downloads per month

MIT license

105KB
2.5K SLoC

Commit Log

Sequential, disk-backed commit log library for Rust. The library can be used in various higher-level distributed abstractions on top of a distributed log such as Paxos, Chain Replication or Raft.

Crates.io Docs.rs Travis

Documentation

Usage

First, add this to your Cargo.toml:

[dependencies]
commitlog = "0.1"
extern crate commitlog;

use commitlog::*;

fn main() {
    // open a directory called 'log' for segment and index storage
    let opts = LogOptions::new("log");
    let mut log = CommitLog::new(opts).unwrap();

    // append to the log
    log.append("hello world").unwrap(); // offset 0
    log.append("second message").unwrap(); // offset 1

    // read the messages
    let messages = log.read(0, ReadLimit::default()).unwrap();
    for msg in messages.iter() {
        println!("{} - {}", msg.offset(), String::from_utf8_lossy(msg.payload()));
    }

    // prints:
    //    0 - hello world
    //    1 - second message
}

Prior Art

Dependencies

~400–530KB