package com.perforce.workspace.tjuricek.p4oauth.jetty; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * */ public class LoggingHandlers { private static Logger logger = LogManager.getFormatterLogger(LoggingHandlers.class); private static Marker HTTP = MarkerManager.getMarker("HTTP"); private static final ThreadLocal<Long> currentStart = new ThreadLocal<Long>() { @Override protected Long initialValue() { return System.currentTimeMillis(); } }; public static class LogStartHandler extends AbstractHandler { @Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // Generates the start time for the thread currentStart.get(); } } public static class LogEndHandler extends AbstractHandler { @Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // This depends upon the log start handler firing first long ms = System.currentTimeMillis() - currentStart.get(); logger.info(HTTP, "method:%s path:%s time:%dms", request.getMethod(), request.getPathInfo(), ms); } } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 9095 | tjuricek | Added some basic test data and renamed "workspace" to "workshop" in package name | ||
#1 | 9089 | tjuricek |
Moving some code that worked via some manual validation to the workshop. This just implements a basic code authorization grant scheme. Automated tests are forthcoming, awating some gradle plugin work that should sit outside of this project. |