<%-- $This file is distributed under the terms of the license in /doc/license.txt$ --%> <%@ page import="edu.cornell.mannlib.vitro.webapp.controller.Controllers" %> <%@ page import="org.apache.log4j.*" %> <%@ page import="java.util.*" %> <%@ taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> <%-- This JSP will display all the log4j Logger objects, their levels and their appenders. The levels of the Logger objects can be changed and test messages can be sent. Brian Cauros bdc34@cornell.edu based on work by Volker Mentzner. --%> <% try { String name; Level[] levels = new Level[] {Level.OFF, Level.FATAL, Level.ERROR, Level.WARN, Level.INFO, Level.DEBUG}; out.write("log4j configuration\r\n"); out.write("

log4j

\r\n"); // handle a request with query if( request.getParameterMap().size() > 0){ if( request.getParameter("doTestMsg") != null){ //handle test message Logger logger = LogManager.getLogger( request.getParameter("logger") ); Level level = (Level)Level.toLevel( request.getParameter("level")); logger.log(level, request.getParameter("msg")); out.write("

message sent

"); } else { //handle logging level changes Enumeration names = request.getParameterNames(); while(names.hasMoreElements()){ String catname = (String)names.nextElement(); String catval = request.getParameter(catname); if( "root".equalsIgnoreCase(catname)) LogManager.getRootLogger().setLevel((Level)Level.toLevel(catval)); else LogManager.getLogger(catname).setLevel((Level)Level.toLevel(catval)); } } } out.write("

" + notes + "

"); // output category information in a form with a simple table out.write("
"); out.write("\r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); // output for all Loggers List logNames = new LinkedList(); for(Enumeration en = LogManager.getCurrentLoggers(); en.hasMoreElements() ;){ logNames.add(((Logger)en.nextElement()).getName()); } Collections.sort(logNames); logNames.add(0,"root"); Logger cat; for (String logName : logNames) { if( "root".equalsIgnoreCase(logName)) cat = LogManager.getRootLogger(); else cat = LogManager.getLogger(logName); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); } out.write("
LoggerLevelAppender
" + cat.getName() + "\r\n"); out.write(" \r\n"); out.write(" \r\n"); for( Appender apd : getAllAppenders( cat )){ name = apd.getName(); if (name == null) name = "(no name)"; out.write(name); if (apd instanceof AppenderSkeleton) { try { AppenderSkeleton apskel = (AppenderSkeleton)apd; out.write(" [" + apskel.getThreshold().toString() + "]"); } catch (Exception ex) { } } out.write(" "); } out.write("
\r\n"); out.write(""); out.write("
\n"); /* write out form to do a test message */ out.write("

Test the logging configuration by sending a test message

\n"); out.write("
\n"); out.write("\n"); out.write("\n\r"); out.write(" \n\r"); out.write(" \n\r"); out.write(" \n\r"); out.write(" \n\r"); out.write(" \n\r"); out.write(" \n\r"); out.write(" \n\r"); out.write("
logger:
level:
message:
\n"); out.write("\r\n"); out.flush(); } catch (Exception ex) { throw new Error( ex); } %> <%! String notes ="

Changing the level of a Logger on this form does not change the levels of that Logger's children."+ "

Example: if you change the level of the Logger edu.cornell.mannlib.utils from ERROR to DEBUG, the " + "logging level of edu.cornell.mannlib.utils.StringUtils will not be modified." + "

Loggers will write message to all of their Appenders; you cannot have a DEBUG level For Logger A, Appender A "+ " and a WARN level for a Logger A, Appender B."; %> <%! private Collection getAllAppenders(Category logger){ HashSet appenders = new HashSet(); Enumeration en = logger.getAllAppenders(); while( en.hasMoreElements()){ appenders.add((Appender) en.nextElement()); } if( logger.getParent() != null ) appenders.addAll( getAllAppenders(logger.getParent())); return appenders; } %>