## Link to GitHub Issue, if one exists
#388
## Description of change
Instead of setting flags in `signal` and logging when we crash, create a
class for logging deferred semi-fatal messages, and dump them to the log
immediately before crashing or shutting down.
## Testing
Tested each failure case by injection.