base.go
func (b *Base) SetFallbackLogger(logger Logger) error {
	if logger == nil {
		if b.fallbackLogger != nil && b.fallbackLogger.IsInitialized() {
			b.fallbackLogger.ShutdownLogger()
		}
		b.fallbackLogger = nil
		return nil
	}

	if !logger.IsInitialized() {
		err := logger.InitLogger()
		if err != nil {
			return err
		}
	}

	// Shut down any old logger we might already have a reference to
	if b.fallbackLogger != nil && b.fallbackLogger.IsInitialized() {
		b.fallbackLogger.ShutdownLogger()
	}

	b.fallbackLogger = logger

	return nil
}
func (b *Base) SetFallbackLogger(logger Logger) error {
	if logger == nil {
		if b.fallbackLogger != nil && b.fallbackLogger.IsInitialized() {
			b.fallbackLogger.ShutdownLogger()
		}
		b.fallbackLogger = nil
		return nil
	}

	if !logger.IsInitialized() {
		err := logger.InitLogger()
		if err != nil {
			return err
		}
	}

	// Shut down any old logger we might already have a reference to
	if b.fallbackLogger != nil && b.fallbackLogger.IsInitialized() {
		b.fallbackLogger.ShutdownLogger()
	}

	b.fallbackLogger = logger

	return nil
}
// SetFallbackLogger sets a Logger to be used if there aren't any loggers added or any of
// the added loggers are in a degraded or unhealthy state.  A Logger passed to SetFallbackLogger
// will be initialized if it hasn't been already.  In addition, if the Logger fails to initialize
// completely the fallback logger will fail to be set.