barnowl/barnowl — pull request #109 by JasonGross (2013-01-05 20:43:21+00:00)
Title: Defer failed log messages

Previously, when we failed to open a logging file, we errored, and
dropped the log message. This commit makes it so that, if the reason we
failed was a permissions error, we instead add the log entry to a queue
of messages to be logged eventually, and inform the user that logging
has been suspended. The user must run :flush-logs to resume logging.

If :flush-log has an fopen that fails with EPERM or EACCES, we re-defer
messages and inform the user.

On shutdown, BarnOwl will attempt to log all messages currently in the
queue one last time.