<%-- - $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.*, org.jivesoftware.util.*, java.text.*, org.jivesoftware.util.JiveGlobals, org.jivesoftware.openfire.user.*, java.util.*" %> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %> <% admin.init(request, response, session, application, out ); %> <%! static final String NONE = LocaleUtils.getLocalizedString("global.none"); static final String ERROR = "error"; static final String INFO = "info"; static final String WARN = "warn"; static final String DEBUG = "debug"; static final String DEFAULT = ERROR; static final String ASCENDING = "asc"; static final String DESCENDING = "desc"; static final String[] LINES = {"50","100","250","500"}; static final String[] REFRESHES = {NONE,"10","30","60","90"}; private static HashMap parseCookie(Cookie cookie) { if (cookie == null || cookie.getValue() == null) { HashMap empty = new HashMap(); return empty; } StringTokenizer tokenizer = new StringTokenizer(cookie.getValue(),"&"); HashMap valueMap = new HashMap(); while (tokenizer.hasMoreTokens()) { String tok = tokenizer.nextToken(); int pos = tok.indexOf("="); if (pos > 0) { String name = tok.substring(0,pos); String value = tok.substring(pos+1,tok.length()); valueMap.put(name,value); } } return valueMap; } private static void saveCookie(HttpServletResponse response, HashMap cookie) { StringBuffer buf = new StringBuffer(); for (Iterator iter=cookie.keySet().iterator(); iter.hasNext();) { String name = (String)iter.next(); String value = (String)cookie.get(name); buf.append(name).append("=").append(value); if (iter.hasNext()) { buf.append("&"); } } Cookie newCookie = new Cookie("jiveforums.admin.logviewer",buf.toString()); newCookie.setPath("/"); newCookie.setMaxAge(60*60*24*30); // one month response.addCookie(newCookie); } private static HashMap getLogUpdate(HttpServletRequest request, HttpServletResponse response, File logDir) { // Get the cookie associated with the log files HashMap cookie = parseCookie(CookieUtils.getCookie(request,"jiveforums.admin.logviewer")); String[] logs = {"error", "info", "warn", "debug"}; HashMap newCookie = new HashMap(); HashMap updates = new HashMap(); for (int i=0; i <% // Get parameters String log = ParamUtils.getParameter(request, "log"); String numLinesParam = ParamUtils.getParameter(request,"lines"); int numLines = ParamUtils.getIntParameter(request,"lines",50); int refresh = ParamUtils.getIntParameter(request,"refresh",10); String refreshParam = ParamUtils.getParameter(request,"refresh"); String mode = ParamUtils.getParameter(request,"mode"); boolean clearLog = ParamUtils.getBooleanParameter(request,"clearLog"); boolean markLog = ParamUtils.getBooleanParameter(request,"markLog"); boolean saveLog = ParamUtils.getBooleanParameter(request,"saveLog"); boolean emailLog = ParamUtils.getBooleanParameter(request,"emailLog"); boolean debugEnabled = ParamUtils.getBooleanParameter(request,"debugEnabled"); boolean wasDebugEnabled = ParamUtils.getBooleanParameter(request,"wasDebugEnabled"); // Enable/disable debugging if (request.getParameter("wasDebugEnabled") != null && wasDebugEnabled != debugEnabled) { Log.setDebugEnabled(debugEnabled); response.sendRedirect("logviewer.jsp?log=debug"); return; } debugEnabled = Log.isDebugEnabled(); User pageUser = admin.getUser(); if (clearLog && log != null) { if ("error".equals(log)) { Log.rotateErrorLogFile(); } else if ("warn".equals(log)) { Log.rotateWarnLogFile(); } else if ("info".equals(log)) { Log.rotateInfoLogFile(); } else if ("debug".equals(log)) { Log.rotateDebugLogFile(); } response.sendRedirect("logviewer.jsp?log=" + log); return; } else if (markLog && log != null) { if ("error".equals(log)) { Log.markErrorLogFile(pageUser.getUsername()); } else if ("warn".equals(log)) { Log.markWarnLogFile(pageUser.getUsername()); } else if ("info".equals(log)) { Log.markInfoLogFile(pageUser.getUsername()); } else if ("debug".equals(log)) { Log.markDebugLogFile(pageUser.getUsername()); } response.sendRedirect("logviewer.jsp?log=" + log); return; } else if (saveLog && log != null) { saveLog = false; response.sendRedirect(request.getContextPath() + "/servlet/JiveServlet/?log=" + log); return; } else if (emailLog && log != null) { response.sendRedirect("emaillog.jsp?log=" + log); return; } // Set defaults if (log == null) { log = DEFAULT; } if (mode == null) { mode = ASCENDING; } if (numLinesParam == null) { numLinesParam = "50"; } // Other vars File logDir = new File(Log.getLogDirectory()); String filename = log + ".log"; File logFile = new File(logDir, filename); // Determine if any of the log files contents have been updated: HashMap newlogs = getLogUpdate(request, response, logDir); %> <fmt:message key="logviewer.title"/> <% if (refreshParam != null && !NONE.equals(refreshParam)) { %> <% } %>
  " width="1%"> <%= ((newlogs.containsKey("error"))?"*":"") %>   " width="1%"> <%= ((newlogs.containsKey("warn"))?"*":"") %>   " width="1%"> <%= ((newlogs.containsKey("info"))?"*":"") %>   " width="1%"> <%= ((newlogs.containsKey("debug"))?"*":"") %>  
<% ByteFormat byteFormatter = new ByteFormat(); Date lastMod = new Date(logFile.lastModified()); DateFormat dateFormatter = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); %>
<% if ("debug".equals(log)) { %> <% } %>
<%= logFile.getName() %> (<%= byteFormatter.format(logFile.length()) %>)   onclick="this.form.submit();" id="rb01" > onclick="this.form.submit();" id="rb02" >
<%= dateFormatter.format(lastMod) %>
: ()
:   id="de01">   id="de02">   ">  

: <%= JiveGlobals.getHomeDirectory() %><%= File.separator %>logs