void log()

in spectator-ext-ipc/src/main/java/com/netflix/spectator/ipc/IpcLogger.java [134:180]


  void log(IpcLogEntry entry) {
    Level level = entry.getLevel();
    Predicate<Marker> enabled;
    BiConsumer<Marker, String> log;
    switch (level) {
      case TRACE:
        enabled = logger::isTraceEnabled;
        log = logger::trace;
        break;
      case DEBUG:
        enabled = logger::isDebugEnabled;
        log = logger::debug;
        break;
      case INFO:
        enabled = logger::isInfoEnabled;
        log = logger::info;
        break;
      case WARN:
        enabled = logger::isWarnEnabled;
        log = logger::warn;
        break;
      case ERROR:
        enabled = logger::isErrorEnabled;
        log = logger::error;
        break;
      default:
        enabled = logger::isDebugEnabled;
        log = logger::debug;
        break;
    }

    if (enabled.test(entry.getMarker())) {
      entry.populateMDC();
      log.accept(entry.getMarker(), entry.toString());
      MDC.clear();
    }

    // For successful responses we can reuse the entry to avoid additional allocations. Failed
    // requests might have retries so we just reset the response portion to avoid incorrectly
    // having state bleed through from one request to the next.
    if (entry.isSuccessful()) {
      entry.reset();
      entries.offer(entry);
    } else {
      entry.resetForRetry();
    }
  }