📄 logs.jsp
字号:
<%@include file="/include/handler.jsp"%><%@page import="org.archive.crawler.datamodel.CrawlOrder" %><%@page import="org.archive.crawler.settings.SettingsHandler" %><%@page import="org.archive.crawler.settings.XMLSettingsHandler" %><%@page import="org.archive.crawler.admin.CrawlJob" %><%@page import="org.archive.crawler.util.LogReader" %><%@page import="java.io.File" %><%@page import="org.archive.util.TextUtils" %><% /* Various settings with default values (where applicable) */ String mode = request.getParameter("mode"); String[] log = null; String logText = ""; String logInfo = ""; int linesToShow = 50; int iTime = -1; int linenumber = 1; String timestamp = null; String regexpr = null; boolean ln = false; boolean grep = false; boolean indent = false; int linesToSkip = 1; /* Which log to display */ String fileName = request.getParameter("log"); if(fileName == null || fileName.length() <= 0) { fileName = "crawl.log"; } if(request.getParameter("linesToShow") != null && request.getParameter("linesToShow").length()>0 ){ try{ linesToShow = Integer.parseInt(request.getParameter("linesToShow")); } catch(java.lang.NumberFormatException e){ linesToShow = 50; } } /* Location of logs */ SettingsHandler settingsHandler = null; CrawlJob theJob = null; if(request.getParameter("job") != null && request.getParameter("job").length() > 0){ //Get logs for specific job. This assumes that the logs for each job are stored in a unique location. theJob = handler.getJob(request.getParameter("job")); }else{ if(handler.getCurrentJob() != null){ // If no specific job then assume current one theJob = handler.getCurrentJob(); } else if(handler.getCompletedJobs().size() > 0){ // If no current job, use the latest completed job. theJob = (CrawlJob)handler.getCompletedJobs().get(handler.getCompletedJobs().size()-1); } } if(theJob != null) { // Got a valid crawl order, find it's logs if(mode != null && mode.equalsIgnoreCase("number")) { /* Get log by line number */ try { linenumber = Integer. parseInt(request.getParameter("linenumber")); } catch(Exception e){/*Ignore*/} log = LogReader.getFromSeries(theJob.getLogPath(fileName), linenumber, linesToShow); } else if(mode != null && mode.equalsIgnoreCase("time")) { /* View by timestamp */ timestamp = request.getParameter("timestamp"); if(timestamp == null || timestamp.length() < 1) { // No data logText = "No timestamp!"; } else { int timestampLinenumber = LogReader. findFirstLineBeginningFromSeries(theJob.getLogPath(fileName), timestamp); log = LogReader.getFromSeries(theJob.getLogPath(fileName), timestampLinenumber, linesToShow); } } else if(mode != null && mode.equalsIgnoreCase("regexpr")) { /* View by regexpr */ try { linesToSkip = Integer.parseInt(request.getParameter("linesToSkip")); } catch(Exception e){/*Ignore*/} regexpr = request.getParameter("regexpr"); if(regexpr == null) { logText = "No regular expression"; } else { ln = request.getParameter("ln")!=null&&request.getParameter("ln").equalsIgnoreCase("true"); grep = request.getParameter("grep")!=null&&request.getParameter("grep").equalsIgnoreCase("true"); indent = request.getParameter("indent")!=null&&request.getParameter("indent").equalsIgnoreCase("true"); if(grep){ regexpr = ".*" + regexpr + ".*"; } if(indent) { log = LogReader. getByRegExprFromSeries(theJob.getLogPath(fileName), regexpr, " ", ln,linesToSkip-1, linesToShow); } else { log = LogReader. getByRegExprFromSeries(theJob.getLogPath(fileName), regexpr, 0, ln,linesToSkip-1, linesToShow); } } } else { /* View by tail (default) */ mode = "tail"; try { iTime = Integer.parseInt(request.getParameter("time")); } catch(Exception e){/* Ignore - default value will do */} log = LogReader.tail(theJob.getLogPath(fileName), linesToShow); } } else { mode = "tail"; log = new String[]{"Invalid or missing crawl order",""}; } if(log != null && log.length>=2){ logText = log[0]; logInfo = log[1]; } else { logText = ""; logInfo = ""; } String title = "View logs"; int tab = 3; %><%@include file="/include/head.jsp"%> <% if(iTime>0){ %> <meta http-equiv=Refresh content="<%=iTime%> URL=logs.jsp?time=<%=iTime%>&log=<%=fileName%>&linesToShow=<%=linesToShow%>"> <% } %> <% if(theJob == null){ out.println("<br /><b>No job selected/available</b>"); return; } %> <script type="text/javascript"> function viewLog(log) { document.frmLogs.log.value = log; document.frmLogs.submit(); } function changeMode(mode) { document.frmLogs.mode.value = mode; document.frmLogs.submit(); } </script> <form method="get" action="logs.jsp" name="frmLogs"> <input type="hidden" name="job" value="<%=theJob.getUID()%>"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td height="3"></td> </tr> <tr> <td valign="top" width="210"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50" align="right" valign="top"> <b>View:</b> </td> <td align="left" valign="top" width="160"> <a href="javascript:viewLog('crawl.log')" <%=fileName.equalsIgnoreCase("crawl.log")?"style='text-decoration: none; color: #000000'":""%>>crawl.log</a><br> <a href="javascript:viewLog('local-errors.log')" <%=fileName.equalsIgnoreCase("local-errors.log")?"style='text-decoration: none; color: #000000'":""%>>local-errors.log</a><br> <a href="javascript:viewLog('progress-statistics.log')" <%=fileName.equalsIgnoreCase("progress-statistics.log")?"style='text-decoration: none; color: #000000'":""%>>progress-statistics.log</a><br> <a href="javascript:viewLog('runtime-errors.log')" <%=fileName.equalsIgnoreCase("runtime-errors.log")?"style='text-decoration: none; color: #000000'":""%>>runtime-errors.log</a><br> <a href="javascript:viewLog('uri-errors.log')" <%=fileName.equalsIgnoreCase("uri-errors.log")?"style='text-decoration: none; color: #000000'":""%>>uri-errors.log</a><br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -