<%-- - $RCSfile$ - $Revision$ - $Date$ - - Copyright (C) 2004 Jive Software. All rights reserved. - - This software is published under the terms of the GNU Public License (GPL), - a copy of which is included in this distribution. --%> <%@ page import="java.io.*, java.text.SimpleDateFormat, java.util.Date, java.text.ParseException, org.jivesoftware.util.ParamUtils, org.jivesoftware.util.Log, org.jivesoftware.util.StringUtils" errorPage="error.jsp" %> <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %> <%! static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd kk:mm:ss"); private static final String parseDate(String input) { if (input == null || "".equals(input)) { return input; } if (input.length() < 19) { return input; } String d = input.substring(0,19); // try to parse it try { StringBuffer buf = new StringBuffer(input.length()); synchronized (formatter) { Date date = formatter.parse(d); buf.append(""); } buf.append(d).append(""); buf.append(input.substring(19,input.length())); return buf.toString(); } catch (ParseException pe) { return input; } } private static final String hilite(String input) { if (input == null || "".equals(input)) { return input; } if (input.indexOf("org.jivesoftware.") > -1) { StringBuffer buf = new StringBuffer(); buf.append("").append(input).append(""); return buf.toString(); } else if (input.trim().startsWith("---") && input.trim().endsWith("---")) { StringBuffer buf = new StringBuffer(); buf.append("").append(input).append(""); return buf.toString(); } return input; } %> <% // Get parameters String log = ParamUtils.getParameter(request,"log"); String numLinesParam = ParamUtils.getParameter(request,"lines"); int numLines = ParamUtils.getIntParameter(request,"lines",50); String mode = ParamUtils.getParameter(request,"mode"); // Set defaults if (log == null) { log = "error"; } if (mode == null) { mode = "asc"; } if (numLinesParam == null) { numLinesParam = "50"; } // Other vars File logDir = new File(Log.getLogDirectory()); String filename = log + ".log"; File logFile = new File(logDir, filename); BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(logFile), "UTF-8")); String line = null; int totalNumLines = 0; while ((line=in.readLine()) != null) { totalNumLines++; } in.close(); // adjust the 'numLines' var to match totalNumLines if 'all' was passed in: if ("All".equals(numLinesParam)) { numLines = totalNumLines; } String[] lines = new String[numLines]; in = new BufferedReader(new InputStreamReader(new FileInputStream(logFile), "UTF-8")); // skip lines int start = totalNumLines - numLines; if (start < 0) { start = 0; } for (int i=0; i <%= log %>
 
<% if ("asc".equals(mode)) { %> <% for (int j=start+1; j<=numLines; j++) { %> <%= j %>
<% } %> <% } else { %> <% for(int j=numLines; j>=start+1; j--) { %> <%= j %>
<% } %> <% } %>
<% for (int j=0; j <%= lines[j] %>
<% } } %>