code: public final Flux<T> log(Logger logger,
  			Level level,
  			boolean showOperatorLine,
  			SignalType... options) {
  		SignalLogger<T> log = new SignalLogger<>(this, "IGNORED", level,
  				showOperatorLine,
  				s -> logger,
  				options);
  
  		if (this instanceof Fuseable) {
  			return onAssembly(new FluxLogFuseable<>(this, log));
  		}
  		return onAssembly(new FluxLog<>(this, log));
  	}
docs: Observe Reactive Streams signals matching the passed filter {@code options} and
  trace them using a specific user-provided {@link Logger}, at the given {@link Level}.
  <p>
  Options allow fine grained filtering of the traced signal, for instance to only
  capture onNext and onError:
  <pre>
  flux.log(myCustomLogger, Level.INFO, SignalType.ON_NEXT, SignalType.ON_ERROR)
  </pre>
  <p>
  <img class="marble" src="doc-files/marbles/logForFlux.svg" alt="">
  
  @param logger the {@link Logger} to use, instead of resolving one through a category.
  @param level the {@link Level} to enforce for this tracing Flux (only FINEST, FINE,
  INFO, WARNING and SEVERE are taken into account)
  @param showOperatorLine capture the current stack to display operator class/line number (default in overload is false).
  @param options a vararg {@link SignalType} option to filter log messages
  
  @return a new {@link Flux} that logs signals