A proxy logger that switches between two underlying loggers with recursive invocation detection.
This class is intended to be used by o.a.a.e.logger.AbstractLoggerManager. all the logger switching is done in it during the "warm-up" phase (constructor, enableLogging, contextualize, configure, start). All these operations are held our on a single thread and the object is not exposed to other threads untill (in strict synchronization sense) it has been fully configured. That's why there is no synchronization in this class. If the switching was to occur in a mulitythreaded fasion we would have to synchronize access to m_fallback and m_preferred.
@author Avalon Development Team