public void requestFinished(ServletRequest servletRequest, int status, int contentLength) { CapedwarfRequestLogs capedwarfRequestLogs = getCapedwarfRequestLogs(servletRequest); // check if all went well if (capedwarfRequestLogs != null) { RequestLogs requestLogs = capedwarfRequestLogs.getRequestLogs(); requestLogs.setEndTimeUsec(System.currentTimeMillis() * 1000); requestLogs.setStatus(status); requestLogs.setResponseSize(contentLength); requestLogs.setFinished(true); logWriter.put(capedwarfRequestLogs); } }
@SuppressWarnings("unchecked") private void fetchAppLogLines(RequestLogs requestLogs, CapedwarfLogQuery logQuery) { CacheQuery query = createAppLogLinesQuery(requestLogs); // FetchOptions fetchOptions = createAppLogFetchOptions(logQuery); List<CapedwarfAppLogLine> capedwarfAppLogLines = (List<CapedwarfAppLogLine>) (List) query.list(); for (CapedwarfAppLogLine capedwarfAppLogLine : capedwarfAppLogLines) { requestLogs.getAppLogLines().add(capedwarfAppLogLine.getAppLogLine()); } }
private CacheQuery createAppLogLinesQuery(RequestLogs requestLogs) { QueryBuilder queryBuilder = searchManager.buildQueryBuilderForClass(CapedwarfAppLogLine.class).get(); Query query = queryBuilder .keyword() .onField(CapedwarfAppLogLine.REQUEST_ID) .matching(requestLogs.getRequestId()) .createQuery(); CacheQuery cacheQuery = searchManager.getQuery(query, CapedwarfAppLogLine.class); cacheQuery.sort(new Sort(new SortField(CapedwarfAppLogLine.SEQUENCE_NUMBER, SortField.LONG))); return cacheQuery; }
@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; }
@Override public void processLog(RequestLogs log) { versionId = log.getVersionId(); }