package rfx.server.http.common; import io.netty.handler.codec.http.HttpRequest; import java.io.IOException; import java.util.Calendar; import java.util.Locale; import org.apache.log4j.FileAppender; import org.apache.log4j.Layout; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import rfx.server.configs.HttpServerConfigs; public class AccessLogUtil { private static final Logger accessLog = Logger.getLogger("s2-http-log-server.accessLog"); private static final String DEFAULT_LOG_FORMAT = "%1$s - - [%2$td/%2$tb/%2$tY:%2$tT %2$tz] \"%3$s %4$s %5$s\" %6$d %7$d"; private static int isEnable = 0; public static void logAccess(HttpRequest request, String inetAddress, String uri) { // We've got to use the a default locale here, so that month name is // formatted properly for CLF, regardless of server locale. I've chosen Canada! if (isEnable == 1 && accessLog.isInfoEnabled()) { int status = 200; int contentLength = uri.length(); String method = request.getMethod().name(); String protocol = request.getProtocolVersion().protocolName(); accessLog.info(String.format(Locale.CANADA, DEFAULT_LOG_FORMAT, inetAddress, Calendar.getInstance(), method, uri, protocol, status, contentLength)); System.out.println(inetAddress); } } public static void configureAccessLog(HttpServerConfigs configs) { String fileName = configs.getAccessLogFileName(); isEnable = configs.getAccessLogEnable(); if(isEnable == 1){ accessLog.setLevel(org.apache.log4j.Level.INFO); try { Layout layout = new PatternLayout("%m%n"); FileAppender fileAppender = new FileAppender(layout, fileName); accessLog.addAppender(fileAppender); accessLog.setAdditivity(false); } catch (IOException e) { e.printStackTrace(); } } } }