event-log

An append only event log with streaming support

npm install event-log
60 downloads in the last month

event-log

build status dependency status

An append only event log with streaming support

Example

An event-log is currently coupled to mongo and backed by two collection. A capped real time collection of events and a historic collection.

You configure the event log with a time to live, this means that the event log will keep events in memory for that period of time. If you try to read() from the log for any events older then Date.now() - timeToLive it will not return them.

The event log is designed for real time events and should be used in combination with snapshots, i.e. you read the recent state from a concrete snapshot and merge in real time data from the event log on the fly, preferably in the browser.

var eventLog = require("event-log")

/* get a mongoDB guy somehow */
var db = someMongoDb

db.createCollection("event-log.realtime", {
    capped: true
    , size: 100000
}, function (err, res) {
    /* ensure that the real time collection is capped */
    /* this allows us to use tailable cursors */
})

var realtimeCollection = db.collection("event-log.realtime")
var rawCollection = db.collection("event-log")

var log = eventLog(realtimeCollection, {
    timeToLive: 60 * 60 * 1000 /* HOUR */
    , rawCollection: rawCollection
})

/* each piece of data being added MUST have a timestamp */
log.add("event-type", {
    /* some data */
    timestamp: Date.now()
}, function (err, record) {
    // inserted data
})

/* infinite stream of data */
var stream = log.read(Date.now() - 1000)

stream.on("data", function (item) {
    /* item from event log */
})

Installation

npm install event-log

Contributors

  • Raynos

MIT Licenced

npm loves you