code: public final Mono<T> log(@Nullable String category,
  			Level level,
  			boolean showOperatorLine,
  			SignalType... options) {
  		SignalLogger<T> log = new SignalLogger<>(this, category, level,
  				showOperatorLine, options);
  
  		if (this instanceof Fuseable) {
  			return onAssembly(new MonoLogFuseable<>(this, log));
  		}
  		return onAssembly(new MonoLog<>(this, log));
  	}
docs: Observe Reactive Streams signals matching the passed filter {@code options} and
  use {@link Logger} support to
  handle trace
  implementation. Default will
  use the passed {@link Level} and java.util.logging. If SLF4J is available, it will be used instead.
  
  Options allow fine grained filtering of the traced signal, for instance to only capture onNext and onError:
  <pre>
  mono.log("category", Level.INFO, SignalType.ON_NEXT, SignalType.ON_ERROR)
  </pre>
  <p>
  <img class="marble" src="doc-files/marbles/logForMono.svg" alt="">
  
  @param category to be mapped into logger configuration (e.g. org.springframework
  .reactor). If category ends with "." like "reactor.", a generated operator
  suffix will complete, e.g. "reactor.Mono.Map".
  @param level the {@link Level} to enforce for this tracing Mono (only FINEST, FINE,
  INFO, WARNING and SEVERE are taken into account)
  @param showOperatorLine capture the current stack to display operator
  class/line number.
  @param options a vararg {@link SignalType} option to filter log messages
  
  @return a new unaltered {@link Mono}