I discussed with @andrewor14 offline, but the proposal was basically to refactor things in a way that makes the components more re-usable. Basically we'll separate the three responsibilities here into distinct classes:

a) logging a stream of events to a file.
b) creating an event bus as the result of logged events.
c) mutliplexing several spark listeners from one.