celluloid/celluloid — pull request #92 by grantr (2012-09-17 16:55:43+00:00)
Title: Foolscap-style incident logger

This is a basic incident logging system. It was inspired by Foolscap's [logging framework](http://foolscap.lothar.com/docs/logging.html). The initial design notes are [here](https://github.com/grantr/celluloid/wiki/Foolscap-style-Logging).

This pull request doesn't include any advanced features, but it lays the foundation for

I don't think this is ready for production yet, but I plan to start using it in a new project I'm working on just because it seems pretty useful.

Problems/Notes:

* Incomplete tests
* Since the logger is an actor, log messages can be lost at shutdown if the logger is terminated early.
* Incident reports could also be missed if the notifier or reporter actors are terminated early. Celluloid needs a supervision tree, or at least system actors that are terminated last.
* Loggers and Reporters are not currently linked to anything (except their supervisors). They might need to be linked to each other, or the notifier.
* If the notifier actor crashes, log messages may be lost while it reboots. This might be fixed by linking, or a wait-until-restart signal like PoolManager uses.
* There is no firehose topic. This is a pretty important feature IMO, but I held off because the performance impact of publishing every log message through the notification system is unknown.