%-- $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("\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("\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;
}
%>