package com.vtence.molecule.middlewares;
import com.vtence.molecule.Request;
import com.vtence.molecule.Response;
import com.vtence.molecule.http.HttpMethod;
import java.time.Clock;
import java.util.Locale;
import java.util.function.Consumer;
import java.util.logging.Logger;
public class ApacheCommonLogger extends ApacheLogger {
private static final String COMMON_LOG_FORMAT = "%s - %s [%s] \"%s %s %s\" %s %s";
public ApacheCommonLogger(Logger logger) {
super(logger);
}
public ApacheCommonLogger(Logger logger, Clock clock, Locale locale) {
super(logger, clock, locale);
}
@Override
protected Consumer<Response> logAccess(Request request) {
String remoteIp = request.remoteIp();
HttpMethod method = request.method();
String uri = request.uri();
String protocol = request.protocol().toUpperCase();
return response -> {
String msg = String.format(COMMON_LOG_FORMAT,
remoteIp,
"-",
currentTime(),
method,
uri,
protocol,
response.statusCode(),
contentLengthOf(response));
logger.info(msg);
};
}
}