JLog

JLog is short for "journaled log" and this package is really an API and implementation that is libjlog. What is libjlog? libjlog is a pure C, very simple durable message queue with multiple subscribers and publishers (both thread and multi-process safe). The basic concept is that publishers can open a log and write messages to it while subscribers open the log and consume messages from it. "That sounds easy." libjlog abstracts away the need to perform log rotation or maintenance by publishing into fixed size log buffers and eliminating old log buffers when there are no more consumers pending.

Implementation Goal

The goal of libjlog is to provide a brain-dead simple API, a very small and uncomplicated implementation. The goal of the JLog is to have others use this project for adding durability to some of their asynchronous notification needs.

Sample Use Case

We run an application on server A and would like to write logs to server B. If server B is down, we don't want to lose logs and we do want A to continue operating. So A writes to a JLog and B consumes from that JLog. Sounds simple, but JLog is a low-level API. The implementor must provide a service on A to which B can connect to consume the JLog messages over the network. If you want to have you cake and eat it too, become a baker and use this fine ingredient!

Read through Concepts for a bit more detail on core concepts and a brief overview of how to use the C API.

Team

  • Wez Furlong
  • Alec Peterson
  • George Schlossnagle
  • Theo Schlossnagle
  • Alexey Toptygin (current maintainer)

License

JLog is released under a new BSD license. See our license for details.