@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); StringBuilder builder = new StringBuilder(); Object resourceName = request.getParameter("resource"); LogQuery query = LogQuery.Builder.withDefaults(); if (resourceName != null) { builder.append("<b>REQUEST LOG for : " + resourceName + "</b> <br />"); builder.append("<b>Resource | IP Address| Method | Time </b> <hr/>"); for (RequestLogs record : LogServiceFactory.getLogService().fetch(query)) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(record.getStartTimeUsec() / 1000); if (record.getResource().contains(resourceName.toString())) { builder.append( record.getResource() + " " + record.getIp() + " " + record.getMethod() + " " + cal.getTime().toString() + "<br/>"); } } writer.println(builder.toString()); /*Object cronHeader = request.getHeader("X-AppEngine-Cron"); if(cronHeader != null && Boolean.getBoolean(cronHeader.toString()) == Boolean.TRUE){ */ new MailProviderImpl() .sendMail( "*****@*****.**", "*****@*****.**", "NotesOnFly-Admin", "Resource: " + resourceName + " Usage Report", builder.toString()); // } } else { writer.println("No Resource criteria provided."); } }
private CapedwarfRequestLogs createCapedwarfRequestLogs( ServletRequest servletRequest, long startTimeMillis, CapedwarfEnvironment environment) { long startTimeUsec = startTimeMillis * 1000; CapedwarfRequestLogs capedwarfRequestLogs = new CapedwarfRequestLogs(); RequestLogs requestLogs = capedwarfRequestLogs.getRequestLogs(); requestLogs.setRequestId(generateId()); requestLogs.setStartTimeUsec(startTimeUsec); requestLogs.setEndTimeUsec(startTimeUsec); requestLogs.setFinished(false); requestLogs.setAppId(environment.getAppId()); requestLogs.setModuleId(environment.getModuleId()); requestLogs.setVersionId(environment.getVersionId()); if (servletRequest instanceof HttpServletRequest) { HttpServletRequest request = (HttpServletRequest) servletRequest; String queryString = request.getQueryString(); requestLogs.setResource( request.getRequestURI() + (queryString == null ? "" : ("?" + queryString))); requestLogs.setUserAgent(request.getHeader("User-Agent")); requestLogs.setMethod(request.getMethod()); requestLogs.setReferrer(request.getHeader("referer")); requestLogs.setHost( request.getServerName() + (request.getServerPort() == 80 ? "" : (":" + request.getServerPort()))); } requestLogs.setHttpVersion(servletRequest.getProtocol()); requestLogs.setInstanceKey(""); // TODO requestLogs.setReplicaIndex(-1); // TODO requestLogs.setPendingTime(0); // TODO requestLogs.setLatency(0); // TODO // requestLogs.setUrlMapEntry(); // requestLogs.setTaskName(); // requestLogs.setTaskQueueName(); // requestLogs.setWasLoadingRequest(); requestLogs.setNickname(""); requestLogs.setIp(servletRequest.getRemoteAddr()); requestLogs.setCost(0); requestLogs.setMcycles(0); requestLogs.setApiMcycles(0); // combined='93.103.26.101 - - [17/Jan/2013:08:07:11 -0800] "GET /favicon.ico HTTP/1.1" 404 0 - // "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) // Chrome/24.0.1312.52 Safari/537.17"', requestLogs.setCombined( requestLogs.getIp() + " - " + requestLogs.getNickname() + (requestLogs.getNickname().isEmpty() ? "" : " ") + "- [" + DATE_FORMAT.format(requestLogs.getStartTimeUsec() / 1000L) + "] \"" + requestLogs.getMethod() + " " + requestLogs.getResource() + " " + requestLogs.getHttpVersion() + "\" " + requestLogs.getStatus() + " " + requestLogs.getResponseSize() + " - \"" + requestLogs.getUserAgent() + "\""); // requestLogs.setOffset(); TODO return capedwarfRequestLogs; }