module BitGirder::Event::Logger

Base library for BitGirder event logging. Generators of an event will call Engine.log_event, which dispatches the event to a dynamic set of listeners.

Typically an application will create a single Engine instance during application startup, register some number of listeners, and then make the engine available to the rest of the application for logging events via Engine#log_event.

Listeners registered with an Engine (see Engine#add_listener) should process events immediately and without blocking, since they execute in the call stack of the event producer. In particular, implementations which serialize events and perform IO (write to disk, send over a network) should be careful not to perform the IO directly upon receiving the event, but should delegate this to some ancillary thread.

Events can be any ruby object. It is up to each listener to decide if/how to handle a given event.

Development roadmap for this library: