reactor-core/src/main/java/reactor/core/publisher/SignalLogger.java
void safeLog(SignalType signalType, Object signalValue) {
		if (signalValue instanceof Fuseable.QueueSubscription) {
			signalValue = String.valueOf(signalValue);
			if (log.isDebugEnabled()) {
				log.debug("A Fuseable Subscription has been passed to the logging framework, this is generally a sign of a misplaced log(), " +
						"eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'");
			}
		}
		try {
			log(signalType, signalValue);
		}
		catch (UnsupportedOperationException uoe) {
			log(signalType, String.valueOf(signalValue));
			if (log.isDebugEnabled()) {
				log.debug("UnsupportedOperationException has been raised by the logging framework, does your log() placement make sense? " +
						"eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'", uoe);
			}
		}
	}
void safeLog(SignalType signalType, Object signalValue) {
		if (signalValue instanceof Fuseable.QueueSubscription) {
			signalValue = String.valueOf(signalValue);
			if (log.isDebugEnabled()) {
				log.debug("A Fuseable Subscription has been passed to the logging framework, this is generally a sign of a misplaced log(), " +
						"eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'");
			}
		}
		try {
			log(signalType, signalValue);
		}
		catch (UnsupportedOperationException uoe) {
			log(signalType, String.valueOf(signalValue));
			if (log.isDebugEnabled()) {
				log.debug("UnsupportedOperationException has been raised by the logging framework, does your log() placement make sense? " +
						"eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'", uoe);
			}
		}
	}
void safeLog ( SignalType signalType , Object signalValue ) { if ( signalValue instanceof Fuseable . QueueSubscription ) { signalValue = String . valueOf ( signalValue ) ; if ( log . isDebugEnabled ( ) ) { log . debug ( "A Fuseable Subscription has been passed to the logging framework, this is generally a sign of a misplaced log(), " + "eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'" ) ; } } try { log ( signalType , signalValue ) ; } catch ( UnsupportedOperationException uoe ) { log ( signalType , String . valueOf ( signalValue ) ) ; if ( log . isDebugEnabled ( ) ) { log . debug ( "UnsupportedOperationException has been raised by the logging framework, does your log() placement make sense? " + "eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'" , uoe ) ; } } }
Structured logging with level adaptation and operator ascii graph if required +
protection against loggers that detect objects like {@link Fuseable.QueueSubscription}
as {@link java.util.Collection} and attempt to use their iterator for logging.

@see #log
Structured logging with level adaptation and operator ascii graph if required + protection against loggers that detect objects like { @link Fuseable . QueueSubscription } as { @link java . util . Collection } and attempt to use their iterator for logging .