
org.zalando.logbook.DefaultHttpLogWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of logbook-core Show documentation
Show all versions of logbook-core Show documentation
HTTP request and response logging
package org.zalando.logbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.function.BiConsumer;
import java.util.function.Predicate;
public final class DefaultHttpLogWriter implements HttpLogWriter {
public enum Level {
TRACE, DEBUG, INFO, WARN, ERROR
}
private final Logger logger;
private final Predicate activator;
private final BiConsumer consumer;
public DefaultHttpLogWriter() {
this(LoggerFactory.getLogger(Logbook.class));
}
public DefaultHttpLogWriter(final Logger logger) {
this(logger, Level.TRACE);
}
public DefaultHttpLogWriter(final Logger logger, final Level level) {
this.logger = logger;
this.activator = chooseActivator(level);
this.consumer = chooseConsumer(level);
}
private static Predicate chooseActivator(final Level level) {
switch (level) {
case DEBUG:
return Logger::isDebugEnabled;
case INFO:
return Logger::isInfoEnabled;
case WARN:
return Logger::isWarnEnabled;
case ERROR:
return Logger::isErrorEnabled;
default:
return Logger::isTraceEnabled;
}
}
private static BiConsumer chooseConsumer(final Level level) {
switch (level) {
case DEBUG:
return Logger::debug;
case INFO:
return Logger::info;
case WARN:
return Logger::warn;
case ERROR:
return Logger::error;
default:
return Logger::trace;
}
}
Logger getLogger() {
return logger;
}
@Override
public boolean isActive(final RawHttpRequest request) {
return activator.test(logger);
}
@Override
public void writeRequest(final Precorrelation precorrelation) {
consumer.accept(logger, precorrelation.getRequest());
}
@Override
public void writeResponse(final Correlation correlation) {
consumer.accept(logger, correlation.getResponse());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy