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();
}
}