⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logviewer.jsp

📁 jive3论坛开源 最新 有版主功能 jive3论坛开源 最新 有版主功能 jive3论坛开源 最新 有版主功能
💻 JSP
📖 第 1 页 / 共 2 页
字号:
<%/** *	$RCSfile: logviewer.jsp,v $ *	$Revision: 1.8 $ *	$Date: 2003/03/04 22:22:21 $ */%><%@ page import="java.io.*,                 com.jivesoftware.util.*,                 com.jivesoftware.forum.util.SkinUtils,                 java.text.*,                 com.jivesoftware.base.log.Logger"    errorPage="error.jsp"%><%@ include file="global.jsp" %><%!    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"};    static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd kk:mm");    private static final String parseDate(HttpServletRequest request, User pageUser, String input) {        if (input == null || "".equals(input)) {            return input;        }        if (input.length() < 16) {            return input;        }        String d = input.substring(0,16);        // try to parse it        try {            Date date = formatter.parse(d);            StringBuffer buf = new StringBuffer(input.length());            buf.append("<span class=\"date\" title=\"").append(SkinUtils.dateToText(request,pageUser,date)).append("\">");            buf.append(d).append("</span>");            buf.append(input.substring(16,input.length()));            return buf.toString();        }        catch (ParseException pe) {            return input;        }    }    private static final String hilite(HttpServletRequest request, User pageUser, String input) {        if (input == null || "".equals(input)) {            return input;        }        if (input.indexOf("com.jivesoftware.") > -1) {            StringBuffer buf = new StringBuffer();            buf.append("<span class=\"hilite\">").append(input).append("</span>");            return buf.toString();        }        return input;    }    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("=");            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<logs.length; i++) {            // Check for the value in the cookie:            String key = logs[i] + ".size";            long savedSize = 0L;            if (cookie.containsKey(key)) {                try {                    savedSize = Long.parseLong((String)cookie.get(key));                }                catch (NumberFormatException nfe) {}            }            // Update the size in the Map:            File logFile = new File(logDir, "jive." + logs[i] + ".log");            long currentSize = logFile.length();            newCookie.put(key, ""+currentSize);            if (currentSize != savedSize) {                updates.put(logs[i], "true");            }        }        saveCookie(response, newCookie);        return updates;    }%><%  // Permission check    if (!isSystemAdmin) {        throw new UnauthorizedException("You don't have admin privileges to perform this operation.");    }    // 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");    boolean save = ParamUtils.getBooleanParameter(request,"save");    String mode = ParamUtils.getParameter(request,"mode");    boolean debugEnabled = ParamUtils.getBooleanParameter(request,"debugEnabled");    boolean wasDebugEnabled = ParamUtils.getBooleanParameter(request,"wasDebugEnabled");    boolean debugAlert = ParamUtils.getBooleanParameter(request,"debugAlert");    // Enable/disable debugging    if (request.getParameter("wasDebugEnabled") != null && wasDebugEnabled != debugEnabled) {        JiveGlobals.setJiveProperty("log.debug.enabled",String.valueOf(debugEnabled));        response.sendRedirect("logviewer.jsp?log=debug&debugAlert=true");        return;    }    debugEnabled = "true".equals(JiveGlobals.getJiveProperty("log.debug.enabled"));    // Set defaults    if (log == null) {        log = DEFAULT;    }    if (mode == null) {        mode = ASCENDING;    }    if (numLinesParam == null) {        numLinesParam = "50";    }    // Other vars    File logDir = new File(JiveGlobals.getJiveHome(),"logs");    String filename = "jive." + log + ".log";    File logFile = new File(logDir, filename);    boolean tooBig = (logFile.length() / (1024)) > 250;    // Determine if any of the log files contents have been updated:    HashMap newlogs = getLogUpdate(request, response, logDir);    BufferedReader in = new BufferedReader(new FileReader(logFile));    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 FileReader(logFile));    // skip lines    int start = totalNumLines - numLines;    if (start < 0) { start = 0; }    for (int i=0; i<start; i++) {        in.readLine();    }    int i = 0;    if (ASCENDING.equals(mode)) {        while ((line=in.readLine()) != null && i<numLines) {            line = parseDate(request, pageUser, line);            line = hilite(request, pageUser, line);            lines[i] = line;            i++;        }    }    else {        int end = lines.length-1;        while ((line=in.readLine()) != null && i<numLines) {            line = parseDate(request, pageUser, line);            line = hilite(request, pageUser, line);            lines[end-i] = line;            i++;        }    }    numLines = start + i;%><%@ include file="header.jsp" %><%  if (refreshParam != null && !"None".equals(refreshParam)) { %>    <meta http-equiv="refresh" content="<%= refresh %>"><%  } %><%  if (debugAlert) { %>    <script language="JavaScript" type="text/javascript">    alert('Your change to the debug logging will go into affect after you restart your appserver.');    </script><%  } %><%  // Title of this page and breadcrumbs    String title = "Log Viewer";    String[][] breadcrumbs = {        {"Main", "main.jsp"},        {title, "logviewer.jsp?log=" + log}    };%><%@ include file="title.jsp" %>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -