Split out failure_state into a separate class so it can be stored in (eg) redis.
Introduce NullLogger to avoid if @loggers all over the place.