<%@ page contentType="text/html; charset=UTF-8" import="javax.servlet.*" import="javax.servlet.http.*" import="java.io.*" %> <%! String taskId = null; long logOffset = -1, logLength = -1; boolean tailLog = false; long tailSize = 1024; int tailWindow = 1; boolean entireLog = false; boolean plainText = false; TaskLog.LogFilter filter = null; private void printTaskLog(JspWriter out, TaskLog.LogFilter filter) throws IOException { if (!plainText) { out.println("
" + filter + " logs
"); out.println(""); } boolean gotRequiredData = true; try { TaskLog.Reader taskLogReader = new TaskLog.Reader(taskId, filter); byte[] b = null; int bytesRead = 0; int targetLength = 0; if (entireLog) { b = taskLogReader.fetchAll(); targetLength = bytesRead = b.length; } else { if (tailLog) { b = new byte[(int)tailSize]; targetLength = (int)tailSize; bytesRead = taskLogReader.tail(b, 0, b.length, tailSize, tailWindow); } else { b = new byte[(int)logLength]; targetLength = (int)logLength; bytesRead = taskLogReader.read(b, 0, b.length, logOffset, logLength); } } if (bytesRead != targetLength && targetLength <= taskLogReader.getTotalLogSize()) { if( !plainText) { out.println("Warning: Could not fetch " + targetLength + " bytes from the task-logs; probably purged!
"); }else{ out.println("Warning: Could not fetch " + targetLength + " bytes from the task-logs; probably purged!"); } gotRequiredData = false; } String logData = new String(b, 0, bytesRead); if (!plainText) { out.print(""); } else { out.print(logData); } } catch (IOException ioe) { out.println("Failed to retrieve '" + filter + "' logs for task: " + taskId); } if( !plainText ) { out.println("
" + logData + "
\n"); } if (!entireLog && !plainText) { if (tailLog) { if (gotRequiredData) { out.println("Earlier"); } if (tailWindow > 1) { out.println("Later"); } } else { if (gotRequiredData) { out.println("Earlier"); } out.println("Later"); } } if (!plainText) { out.println("

"); } } %> <% taskId = request.getParameter("taskid"); if (taskId == null) { out.println("

Missing 'taskid' for fetching logs!

"); return; } String logFilter = request.getParameter("filter"); if (logFilter == null) { logFilter = "stderr"; } try { filter = TaskLog.LogFilter.valueOf(TaskLog.LogFilter.class, logFilter.toUpperCase()); } catch (IllegalArgumentException iae) { out.println("

Illegal 'filter': " + logFilter + "

"); return; } String sLogOff = request.getParameter("off"); if (sLogOff != null) { logOffset = Long.valueOf(sLogOff).longValue(); } String sLogLen = request.getParameter("len"); if (sLogLen != null) { logLength = Long.valueOf(sLogLen).longValue(); } String sEntireLog = request.getParameter("all"); if (sEntireLog != null) { entireLog = Boolean.valueOf(sEntireLog); } String sTail = request.getParameter("tail"); if (sTail != null) { tailLog = Boolean.valueOf(sTail); } String sTailLen = request.getParameter("tailsize"); if (sTailLen != null) { tailSize = Long.valueOf(sTailLen).longValue(); } String sTailWindow = request.getParameter("tailwindow"); if (sTailWindow != null) { tailWindow = Integer.valueOf(sTailWindow).intValue(); } String sPlainText = request.getParameter("plaintext"); if (sPlainText != null) { plainText = Boolean.valueOf(sPlainText); } if (logOffset == -1 || logLength == -1) { tailLog = true; tailWindow = 1; } if (entireLog) { tailLog = false; } if( !plainText ) { out.println(""); out.println("Task Logs: '" + taskId + "'"); out.println(""); out.println("

Task Logs: '" + taskId + "'


"); printTaskLog(out, TaskLog.LogFilter.STDOUT); printTaskLog(out, TaskLog.LogFilter.STDERR); printTaskLog(out, TaskLog.LogFilter.SYSLOG); out.println("Hadoop, 2006.
"); out.println(""); out.println(""); } else { printTaskLog(out, filter); } %>