<%@page import="java.io.IOException" %> <%@page import="java.io.PrintWriter" %> <%@page import="java.net.URLEncoder" %> <%@page import="java.util.ArrayList" %> <%@page import="java.util.Arrays" %> <%@page import="java.util.Enumeration" %> <%@page import="org.apache.log4j.LogManager" %> <%@page import="org.apache.log4j.Logger" %> <%@page import="org.apache.log4j.Level" %> <%! public String REQ_PARAM_ACTION = "action"; public String REQ_PARAM_CATEGORY = "cat"; public String REQ_PARAM_PRIORITY = "priority"; public String REQ_ACTION_EDIT = "edit"; public String REQ_ACTION_LIST = "list"; public String REQ_ACTION_SET = "set"; public String simpleEncode( String string ) { if (string == null) return null; int len = string.length(); if (len == 0) return string; StringBuilder buf = new StringBuilder((int)(len*1.25f)); for (int i=0; i < len; ++i) { char c = string.charAt(i); switch (c) { case '<': buf.append("<"); break; case '>': buf.append(">"); break; case '&': buf.append("&"); break; case '"': buf.append("""); break; default: buf.append(c); break; } } return buf.toString(); } public boolean isBlank(String s) { if (s == null) return true; if (s.trim().equals("")) return true; return false; } public void setPriority( HttpServletRequest r, PrintWriter out ) throws IOException { String scat = r.getParameter(REQ_PARAM_CATEGORY); String spri = r.getParameter(REQ_PARAM_PRIORITY); if (scat != null) scat = scat.trim(); Logger log = null; Level pri = null; if (!isBlank(spri)) { pri = Level.toLevel(spri, null); } out.println(""); if (!isBlank(scat) && !scat.equals("root")) { log = Logger.getLogger(scat); log.setLevel(pri); } else { log = Logger.getRootLogger(); if (pri != null) log.setLevel(pri); } } public void renderCategoryList( HttpServletRequest r, PrintWriter out ) throws IOException { String scriptName = getScriptName(r); out.print("
"); out.println(""); out.println( ""); printCategory(Logger.getRootLogger(), scriptName, out); Enumeration e = LogManager.getCurrentLoggers(); ArrayList a = new ArrayList(); while (e.hasMoreElements()) { //printCategory((Logger)e.nextElement(), scriptName, out); a.add(((Logger)e.nextElement()).getName()); } String[] logNames = new String[a.size()]; logNames = (String[])a.toArray(logNames); Arrays.sort(logNames); for (String logName : logNames) { printCategory(Logger.getLogger(logName), scriptName, out); } out.println( ""); out.println("
LoggerLevel




"); out.println(""); out.println("
"); } /** Render a single category row within a category list. */ public void printCategory( Logger log, String scriptName, PrintWriter out ) { boolean isInherited = log.getLevel() == null; String catName = log.getName(); out.print(""); out.print(simpleEncode(catName)); out.print(""); out.print(""); if (isInherited) { out.print(""); } else { out.print(""); } out.print(log.getEffectiveLevel()); if (isInherited) { out.print(""); } else { out.print(""); } out.println(""); } /** Render category edit form. */ public void renderEditForm( HttpServletRequest r, PrintWriter out ) throws IOException { String scriptName = getScriptName(r); out.print("
"); Logger log = getCategory(r.getParameter(REQ_PARAM_CATEGORY)); Level pri = log.getLevel(); String spri = null; if (pri == null) { pri = Logger.getLogger(this.getClass().getName()).getEffectiveLevel(); spri = ""; } else { spri = pri.toString(); } out.print(""); out.print(""); out.print(""); out.print(""); out.print(""); out.print(""); out.print(""); out.println("
Category:"); out.print("
Level:
"); out.println(""); out.println(""); out.println("
"); } public void printPriorityOption( PrintWriter out, String label, String value, String curValue ) { out.print(""); } public void renderHead( PrintWriter out ) { out.println(""); } public void renderFoot( PrintWriter out ) { out.println(""); } /** Retrieve category instance with given name. */ public Logger getCategory( String name ) { if (name != null) name = name.trim(); if (!isBlank(name) && !name.equals("root")) { return Logger.getLogger(name); } return Logger.getRootLogger(); } public String getScriptName( HttpServletRequest r ) { return r.getContextPath() + r.getServletPath(); } %> <% java.io.PrintWriter writer = new java.io.PrintWriter(out); renderHead(writer); String action = request.getParameter(REQ_PARAM_ACTION); if (action == null) action = ""; action = action.trim().toLowerCase(); writer.println(""); writer.println(""); writer.println(""); writer.println(""); if (action.equals(REQ_ACTION_SET)) { setPriority(request, writer); renderCategoryList(request, writer); } else if (action.equals(REQ_ACTION_EDIT)) { renderEditForm(request, writer); return; } else { renderCategoryList(request, writer); } renderFoot(writer); %>