mwomack 2003/02/19 23:45:36 Modified: src/java/org/apache/log4j/servlet ConfigurationServlet.java Log: Jalopy-ized and checkstyle-d version. Revision Changes Path 1.2 +260 -234 jakarta-log4j-sandbox/src/java/org/apache/log4j/servlet/ConfigurationServlet.java Index: ConfigurationServlet.java =================================================================== RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/servlet/ConfigurationServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ConfigurationServlet.java 4 Feb 2003 06:28:16 -0000 1.1 +++ ConfigurationServlet.java 20 Feb 2003 07:45:36 -0000 1.2 @@ -3,11 +3,14 @@ * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this - * distribution in the LICENSE.txt file. + * distribution in the LICENSE.txt file. */ - package org.apache.log4j.servlet; +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; + import java.io.IOException; import java.io.PrintWriter; @@ -24,261 +27,284 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; -import org.apache.log4j.LogManager; -import org.apache.log4j.Level; - /** * A servlet used to dynamically adjust package logging levels - * while an application is running. NOTE: This servlet is - * only aware of pre-configured packages and packages that contain objects + * while an application is running. NOTE: This servlet is + * only aware of pre-configured packages and packages that contain objects * that have logged at least one message since application startup. * * @author <a href="mailto:[EMAIL PROTECTED]">Luther E. Birdzell</a> * @since 1.3 */ -public class ConfigurationServlet extends HttpServlet implements SingleThreadModel -{ - /** - * The response content type: text/html - */ - public static final String CONTENT_TYPE = "text/html"; +public class ConfigurationServlet extends HttpServlet + implements SingleThreadModel { + /** + * The response content type: text/html + */ + public static final String CONTENT_TYPE = "text/html"; + + /** + * The root appender. + */ + public static final String ROOT = "Root"; + + /** + * The name of the class / package. + */ + public static final String CLASS = "CLASS"; + + /** + * The logging level. + */ + public static final String PRIORITY = "PRIORITY"; + + /** + * Print the status of all current <code>Logger</code>s and + * an option to change their respective logging levels. + * + * @param request a <code>HttpServletRequest</code> value + * @param response a <code>HttpServletResponse</code> value + * @exception ServletException if an error occurs + * @exception IOException if an error occurs + */ + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType(CONTENT_TYPE); + + PrintWriter out = response.getWriter(); + List loggers = getSortedLoggers(); + Logger logger = null; + String loggerName = null; + int loggerNum = 0; + + // print title and header + out.println( + "<html><head><title>Log4J Control Console</title></head>" + + "<body><H3>Log4J Control Console</H3>"); + out.println("<A href=\"" + request.getRequestURI() + "\">Refresh</A><HR>"); + out.println("<table width=\"50%\" border=\"1\">"); + out.println("<tr BGCOLOR=\"#5991A6\">"); + out.println( + "<td><FONT COLOR=\"BLACK\" FACE=\"Helvetica\"><B>Class</B></FONT></td>"); + out.print( + "<td><FONT COLOR=\"BLACK\" FACE=\"Helvetica\"><B>Priority</B></FONT>"); + out.println("</td>"); + out.println("</tr>"); - /** - * The root appender. - */ - public static final String ROOT = "Root"; + // print the root Logger + displayLogger(out, Logger.getRootLogger(), loggerNum++, request); - /** - * The name of the class / package. - */ - public static final String CLASS = "CLASS"; - - /** - * The logging level. - */ - public static final String PRIORITY = "PRIORITY"; + // print the rest of the loggers + Iterator ii = loggers.iterator(); - /** - * Print the status of all current <code>Logger</code>s and - * an option to change their respective logging levels. - * - * @param request a <code>HttpServletRequest</code> value - * @param response a <code>HttpServletResponse</code> value - * @exception ServletException if an error occurs - * @exception IOException if an error occurs - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - response.setContentType(CONTENT_TYPE); - - PrintWriter out = response.getWriter(); - List loggers = getSortedLoggers(); - Logger logger = null; - String loggerName = null; - int loggerNum = 0; - - // print title and header - out.println("<html><head><title>Log4J Control Console</title></head>" + - "<body><H3>Log4J Control Console</H3>"); - out.println("<A href=\"" + request.getRequestURI() + "\">Refresh</A><HR>"); - out.println("<table width=\"50%\" border=\"1\">"); - out.println("<tr BGCOLOR=\"#5991A6\">"); - out.println("<td><FONT COLOR=\"BLACK\" FACE=\"Helvetica\"><B>Class</B></FONT></td>"); - out.println("<td><FONT COLOR=\"BLACK\" FACE=\"Helvetica\"><B>Priority</B></FONT></td>"); - out.println("</tr>"); - - // print the root Logger - displayLogger(out, Logger.getRootLogger(), loggerNum++, request); - - // print the rest of the loggers - Iterator ii = loggers.iterator(); - while( ii.hasNext() ) - { - displayLogger(out, (Logger) ii.next(), loggerNum++, request); - } - - out.println("</table>"); - out.println("<FONT SIZE=\"-3\" COLOR=\"BLACK\" FACE=\"Helvetica\">* "+ - "Inherits Priority From Parent.</FONT><BR>"); - out.println("<A href=\"" + request.getRequestURI() + "\">Refresh</A><HR>"); - - // print set options - out.println("<FORM action=\"" + request.getRequestURI() + "\" method=\"post\">"); - out.println("<FONT SIZE=\"+2\" COLOR=\"BLACK\" FACE=\"Helvetica\"><U>"+ - "Set Log4J Option</U><BR><BR></FONT>"); - out.println("<FONT COLOR=\"BLACK\" FACE=\"Helvetica\">"); - out.println("<table width=\"50%\" border=\"1\">"); - out.println("<tr BGCOLOR=\"#5991A6\">"); - out.println("<td><FONT COLOR=\"BLACK\" "+ - "FACE=\"Helvetica\"><B>Class Name:</B></FONT></td>"); - out.println("<td><SELECT name=\"CLASS\">"); - out.println("<OPTION VALUE=\"" + ROOT + "\">" + ROOT + "</OPTION>"); - - ii = loggers.iterator(); - while( ii.hasNext() ) - { - logger = (Logger) ii.next(); - loggerName = (logger.getName().equals("") ? "Root" : logger.getName()); - out.println("<OPTION VALUE=\"" + loggerName + "\">" + loggerName + "</OPTION>"); - } - out.println("</SELECT><BR></td></tr>"); - - // print logging levels - out.println("<tr BGCOLOR=\"#5991A6\"><td><FONT COLOR=\"BLACK\" "+ - "FACE=\"Helvetica\"><B>Priority:</B></FONT></td>"); - out.println("<td><SELECT name=\"PRIORITY\">"); - out.println("<OPTION VALUE=\"" + Level.OFF + "\">" + Level.OFF + "</OPTION>"); - out.println("<OPTION VALUE=\"" + Level.FATAL + "\">" + Level.FATAL + "</OPTION>"); - out.println("<OPTION VALUE=\"" + Level.ERROR + "\">" + Level.ERROR + "</OPTION>"); - out.println("<OPTION VALUE=\"" + Level.WARN + "\">" + Level.WARN + "</OPTION>"); - out.println("<OPTION VALUE=\"" + Level.INFO + "\">" + Level.INFO + "</OPTION>"); - out.println("<OPTION VALUE=\"" + Level.DEBUG + "\">" + Level.DEBUG + "</OPTION>"); - out.println("<OPTION VALUE=\"" + Level.ALL + "\">" + Level.ALL + "</OPTION>"); - out.println("</SELECT><BR></td></tr>"); - out.println("</table></FONT>"); - out.println("<input type=\"submit\" name=\"Submit\" value=\"Set Option\"></FONT>"); - out.println("</FORM>"); - out.println("</body></html>"); + while (ii.hasNext()) { + displayLogger(out, (Logger) ii.next(), loggerNum++, request); + } - out.flush(); - out.close(); + out.println("</table>"); + out.println( + "<FONT SIZE=\"-3\" COLOR=\"BLACK\" FACE=\"Helvetica\">* " + + "Inherits Priority From Parent.</FONT><BR>"); + out.println("<A href=\"" + request.getRequestURI() + "\">Refresh</A><HR>"); + + // print set options + out.println( + "<FORM action=\"" + request.getRequestURI() + "\" method=\"post\">"); + out.println( + "<FONT SIZE=\"+2\" COLOR=\"BLACK\" FACE=\"Helvetica\"><U>" + + "Set Log4J Option</U><BR><BR></FONT>"); + out.println("<FONT COLOR=\"BLACK\" FACE=\"Helvetica\">"); + out.println("<table width=\"50%\" border=\"1\">"); + out.println("<tr BGCOLOR=\"#5991A6\">"); + out.println( + "<td><FONT COLOR=\"BLACK\" " + + "FACE=\"Helvetica\"><B>Class Name:</B></FONT></td>"); + out.println("<td><SELECT name=\"CLASS\">"); + out.println("<OPTION VALUE=\"" + ROOT + "\">" + ROOT + "</OPTION>"); + + ii = loggers.iterator(); + + while (ii.hasNext()) { + logger = (Logger) ii.next(); + loggerName = (logger.getName().equals("") ? "Root" : logger.getName()); + out.println( + "<OPTION VALUE=\"" + loggerName + "\">" + loggerName + "</OPTION>"); } - /** - * Change a <code>Logger</code>'s level, then call <code>doGet</code> - * to refresh the page. - * - * @param request a <code>HttpServletRequest</code> value - * @param response a <code>HttpServletResponse</code> value - * @exception ServletException if an error occurs - * @exception java.io.IOException if an error occurs - */ - public void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - String className = (String) request.getParameter(CLASS); - String priority = (String) request.getParameter(PRIORITY); - - if (className != null) - { - setClass(className, priority); - } - - doGet(request, response); + out.println("</SELECT><BR></td></tr>"); + + // print logging levels + out.println( + "<tr BGCOLOR=\"#5991A6\"><td><FONT COLOR=\"BLACK\" " + + "FACE=\"Helvetica\"><B>Priority:</B></FONT></td>"); + out.println("<td><SELECT name=\"PRIORITY\">"); + out.println( + "<OPTION VALUE=\"" + Level.OFF + "\">" + Level.OFF + "</OPTION>"); + out.println( + "<OPTION VALUE=\"" + Level.FATAL + "\">" + Level.FATAL + "</OPTION>"); + out.println( + "<OPTION VALUE=\"" + Level.ERROR + "\">" + Level.ERROR + "</OPTION>"); + out.println( + "<OPTION VALUE=\"" + Level.WARN + "\">" + Level.WARN + "</OPTION>"); + out.println( + "<OPTION VALUE=\"" + Level.INFO + "\">" + Level.INFO + "</OPTION>"); + out.println( + "<OPTION VALUE=\"" + Level.DEBUG + "\">" + Level.DEBUG + "</OPTION>"); + out.println( + "<OPTION VALUE=\"" + Level.ALL + "\">" + Level.ALL + "</OPTION>"); + out.println("</SELECT><BR></td></tr>"); + out.println("</table></FONT>"); + out.println( + "<input type=\"submit\" name=\"Submit\" value=\"Set Option\"></FONT>"); + out.println("</FORM>"); + out.println("</body></html>"); + + out.flush(); + out.close(); + } + + /** + * Change a <code>Logger</code>'s level, then call <code>doGet</code> + * to refresh the page. + * + * @param request a <code>HttpServletRequest</code> value + * @param response a <code>HttpServletResponse</code> value + * @exception ServletException if an error occurs + * @exception IOException if an error occurs + */ + public void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String className = (String) request.getParameter(CLASS); + String priority = (String) request.getParameter(PRIORITY); + + if (className != null) { + setClass(className, priority); } - // print a Logger and its current level - private void displayLogger(PrintWriter out, Logger logger, - int row, HttpServletRequest request) - { - String color = null; - String loggerName = (logger.getName().equals("") ? ROOT : logger.getName()); - - color = (row%2 == 1) ? "#E1E1E1" : "#FBFBFB"; - - out.println("<tr BGCOLOR=\"" + color + "\">"); - out.println("<td><FONT SIZE=\"-2\" COLOR=\"BLACK\" FACE=\"Helvetica\">" + - loggerName + "</FONT></td>"); - out.println("<td><FONT SIZE=\"-2\" COLOR=\"BLACK\" FACE=\"Helvetica\">" + - ( (logger.getLevel() == null) ? logger.getEffectiveLevel().toString() + - "*" : logger.getLevel().toString()) + "</FONT></td>"); - out.println("</tr>"); + doGet(request, response); + } + + /** + Print a Logger and its current level. + + @param out the output writer. + @param logger the logger to output. + @param row the row number in the table this logger will appear in. + @param request the servlet request. */ + private void displayLogger( + PrintWriter out, Logger logger, int row, HttpServletRequest request) { + String color = null; + String loggerName = + (logger.getName().equals("") ? ROOT : logger.getName()); + + color = ((row % 2) == 1) ? "#E1E1E1" : "#FBFBFB"; + + out.println("<tr BGCOLOR=\"" + color + "\">"); + out.println( + "<td><FONT SIZE=\"-2\" COLOR=\"BLACK\" FACE=\"Helvetica\">" + loggerName + + "</FONT></td>"); + out.println( + "<td><FONT SIZE=\"-2\" COLOR=\"BLACK\" FACE=\"Helvetica\">" + + ((logger.getLevel() == null) + ? (logger.getEffectiveLevel().toString() + "*") + : logger.getLevel().toString()) + "</FONT></td>"); + out.println("</tr>"); + } + + /** + Set a logger's level. + + @param className class name of the logger to set. + @param level the level to set the logger to. + @return String return message for display. */ + private synchronized String setClass(String className, String level) { + Logger logger = null; + String message = null; + + try { + logger = + (className.equals(ROOT)) ? logger.getRootLogger() + : logger.getLogger(className); + + logger.setLevel(Level.toLevel(level)); + } catch (Exception e) { + System.out.println("ERROR Setting LOG4J Logger:" + e); } - - // set a logger's level - private synchronized String setClass(String className, String level) - { - Logger logger = null; - String message = null; - - try - { - logger = (className.equals(ROOT)) ? logger.getRootLogger() : - logger.getLogger(className); - - logger.setLevel(Level.toLevel(level)); - } - - catch (Exception e) - { - System.out.println("ERROR Setting LOG4J Logger:" + e); - } - - return "Message Set For " + (logger.getName().equals("") ? ROOT : logger.getName()); + + return "Message Set For " + + (logger.getName().equals("") ? ROOT : logger.getName()); + } + + /** + Get a sorted list of all current loggers. + + @return List the list of sorted loggers. */ + private List getSortedLoggers() { + Logger logger = null; + Enumeration enum = LogManager.getCurrentLoggers(); + Comparator comp = new LoggerComparator(); + ArrayList list = new ArrayList(); + + // Add all current loggers to the list + while (enum.hasMoreElements()) { + list.add(enum.nextElement()); } - // get a sorted list of all current loggers - private List getSortedLoggers() - { - Logger logger = null; - Enumeration enum = LogManager.getCurrentLoggers(); - Comparator comp = new LoggerComparator(); - ArrayList list = new ArrayList(); - - // Add all current loggers to the list - while(enum.hasMoreElements()) - { - list.add(enum.nextElement()); - } - - // sort the loggers - Collections.sort(list, comp); - - return list; + // sort the loggers + Collections.sort(list, comp); + + return list; + } + + /** + * Compare the names of two <code>Logger</code>s. Used + * for sorting. + */ + private class LoggerComparator implements Comparator { + /** + * Compare the names of two <code>Logger</code>s. + * + * @param o1 an <code>Object</code> value + * @param o2 an <code>Object</code> value + * @return an <code>int</code> value + */ + public int compare(Object o1, Object o2) { + Logger logger1 = (Logger) o1; + Logger logger2 = (Logger) o2; + ; + + String logger1Name = null; + String logger2Name = null; + + if (logger1 != null) { + logger1Name = (logger1.getName().equals("") ? ROOT : logger1.getName()); + } + + if (logger2 != null) { + logger2Name = (logger2.getName().equals("") ? ROOT : logger2.getName()); + } + + return logger1Name.compareTo(logger2Name); } /** - * Compare the names of two <code>Logger</code>s. Used - * for sorting. + * Return <code>true</code> if the <code>Object</code> is a + * <code>LoggerComparator</code> instance. + * + * + * @param o an <code>Object</code> value + * @return a <code>boolean</code> value */ - private class LoggerComparator implements Comparator - { - - /** - * Compare the names of two <code>Logger</code>s. - * - * @param o1 an <code>Object</code> value - * @param o2 an <code>Object</code> value - * @return an <code>int</code> value - */ - public int compare(Object o1, Object o2) - { - Logger logger1 = (Logger) o1; - Logger logger2 = (Logger) o2;; - - String logger1Name = null; - String logger2Name = null; - - if ( logger1 != null ) - logger1Name = (logger1.getName().equals("") ? ROOT : logger1.getName()); - - if ( logger2 != null ) - logger2Name = (logger2.getName().equals("") ? ROOT : logger2.getName()); - - return logger1Name.compareTo(logger2Name); - } - - /** - * Return <code>true</code> if the <code>Object</code> is a - * <code>LoggerComparator</code> instance. - * - * - * @param o an <code>Object</code> value - * @return a <code>boolean</code> value - */ - public boolean equals(Object o) - { - - if (o instanceof LoggerComparator) - return true; - - else - return false; - } + public boolean equals(Object o) { + if (o instanceof LoggerComparator) { + return true; + } else { + return false; + } } + } +} -}//EOF +//EOF
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]