Skip to content

Instantly share code, notes, and snippets.

@joakime
Last active August 29, 2015 14:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joakime/27c42782c9a2712a1010 to your computer and use it in GitHub Desktop.
Save joakime/27c42782c9a2712a1010 to your computer and use it in GitHub Desktop.
Example of how to setup an embedded jetty with request logging enabled.
package jetty;
import java.io.File;
import org.eclipse.jetty.server.NCSARequestLog;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.RequestLogHandler;
import org.eclipse.jetty.server.handler.ResourceHandler;
public class RequestLoggingExample
{
public static void main(String[] args) throws Exception
{
Server server = new Server();
ServerConnector connector = new ServerConnector(server);
connector.setHost("localhost");
connector.setPort(8765);
server.addConnector(connector);
// Setup directories and file references
File userHomeDir = new File(System.getProperty("user.home"));
File tmpDir = new File(userHomeDir, "tmp");
File baseResourceDir = new File(tmpDir, "docroot");
baseResourceDir.mkdirs();
File logFile = new File(tmpDir, "access.log");
logFile.getParentFile().mkdirs();
// Create resource handler (for serving static content)
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setDirectoriesListed(true);
resourceHandler.setWelcomeFiles(new String[] { "index.html" });
resourceHandler.setResourceBase(baseResourceDir.getAbsolutePath());
// Create request log handler (access log)
NCSARequestLog requestLog = new NCSARequestLog(logFile.getAbsolutePath());
requestLog.setExtended(true);
RequestLogHandler requestLogHandler = new RequestLogHandler();
requestLogHandler.setRequestLog(requestLog);
requestLog.setAppend(true);
// Create main handler list (the meat of what is being done)
HandlerList mainHandlers = new HandlerList();
mainHandlers.addHandler(resourceHandler);
// default for all prior unhandled requests
mainHandlers.addHandler(new DefaultHandler());
// Make main handler list be tracked by request logging
requestLogHandler.setHandler(mainHandlers);
// Setup top level handler list, what the server uses
HandlerList topLevelHandlers = new HandlerList();
// NOTE: If you want some handlers to exist, and not be tracked by
// the request log handler (such as rewrites), then declare them
// outside of the scope of the requestLogHandler.
// Example: topLevelHandlers.addHandler(rewriteHandler);
topLevelHandlers.addHandler(requestLogHandler);
// Add top level handler list to server
server.setHandler(topLevelHandlers);
server.start();
server.join();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment