The version of Apache log4j used by SoundHelix.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/aEp6o
SSH:
git clone USERNAME@vervis.peers.community:aEp6o
Branches
Tags
- 1.3alpha-7
- CHAINSAW_2_SANDBOX_MERGE
- CORE_VERSION
- LEVEL_REPLACES_PRIORITY
- PREALPHA_1_3_AS_OF_2004_05_12
- PRE_CHAINSAW_MODEL_CONVERSION
- PRE_UGLI_MOVE
- TAG_CHAINSAW2_MOVE
- log4j-1.2.17
- log4j-1.2.17-rc1
- v1.3alpha8
- v1.3alpha8-temp
- v1_2_1
- v1_2_10-recalled
- v1_2_11
- v1_2_11_rc1
- v1_2_11rc3
- v1_2_12
- v1_2_12_rc1
- v1_2_12_rc2
- v1_2_12_rc3
- v1_2_12_rc4
- v1_2_12_rc5
- v1_2_12_rc6
- v1_2_13
- v1_2_13_rc1
- v1_2_13_rc2
- v1_2_13_site_update
- v1_2_14
- v1_2_14_maven
- v1_2_14_rc1
- v1_2_14_site_update
- v1_2_15
- v1_2_15_rc1
- v1_2_15_rc2
- v1_2_15_rc3
- v1_2_15_rc4
- v1_2_15_rc5
- v1_2_15_rc6
- v1_2_16
- v1_2_16_rc1
- v1_2_16_rc2
- v1_2_17
- v1_2_17-rc1
- v1_2_17_rc1
- v1_2_17_rc2
- v1_2_17_rc3
- v1_2_2
- v1_2_3
- v1_2_4
- v1_2_6
- v1_2_7
- v1_2_9
- v1_2_alpha0
- v1_2_alpha7
- v1_2beta1
- v1_2final
- v1_3alpha_1
- v1_3alpha_6
- v_1_0
- v_1_0_1
- v_1_0_4
- v_1_1
- v_1_1_1
- v_1_1_2
- v_1_1_3
- v_1_1_b1
- v_1_1b2
- v_1_1b3
- v_1_1b5
- v_1_1b6
- v_1_1b7
- v_1_2beta3
Log4jRequestHandler.java
package com.psibt.framework.net;
import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.log4j.*;
/**
* This class implements a RequestHandler for log4j configuration. It serves the "/log4j/" path
* in the PluggableHTTPServer. If this path is requested a list of all current log4j categories
* with their current priorities is created. All priority settings can be changed by the user
* and can be submitted and taken over.
*
* @author <a HREF="mailto:V.Mentzner@psi-bt.de">Volker Mentzner</a>
*/
public class Log4jRequestHandler extends RootRequestHandler {
private Priority[] prios = Priority.getAllPossiblePriorities();
/**
* Creates a new Log4jRequestHandler object
*/
public Log4jRequestHandler() {
this.setTitle("log4j");
this.setDescription("log4j configuration");
this.setHandledPath("/log4j/");
}
/**
* Handles the given request and writes the reply to the given out-stream.
*
* @param request - client browser request
* @param out - Out stream for sending data to client browser
* @return if the request was handled by this handler : true, else : false
*/
public boolean handleRequest(String request, Writer out) {
String path = "";
String query = null;
String name;
try {
// check request url
URL url = new URL("http://localhost"+request);
path = url.getPath();
query = url.getQuery();
if (path.startsWith(this.getHandledPath()) == false) {
return false;
}
out.write("HTTP/1.0 200 OK\r\n");
out.write("Content-type: text/html\r\n\r\n");
out.write("<HTML><HEAD><TITLE>" + this.getTitle() + "</TITLE></HEAD>\r\n");
out.write("<BODY><H1>log4j</H1>\r\n");
out.write(this.getDescription() + "<br><br>\r\n");
// handle a request with query
if ((query != null) && (query.length() >= 0)) {
StringTokenizer st = new StringTokenizer(query, "&");
String cmd;
String catname;
String catval;
int idx;
while (st.hasMoreTokens()) {
cmd = st.nextToken();
idx = cmd.indexOf("=");
catname = cmd.substring(0, idx);
catval = cmd.substring(idx+1, cmd.length());
if (catname.equalsIgnoreCase("root"))
Category.getRoot().setPriority(Priority.toPriority(catval));
else
Category.getInstance(catname).setPriority(Priority.toPriority(catval));
}
}
// output category information in a form with a simple table
out.write("<form name=\"Formular\" ACTION=\""+this.getHandledPath()+"\" METHOD=\"PUT\">");
out.write("<table cellpadding=4>\r\n");
out.write(" <tr>\r\n");
out.write(" <td><b>Category</b></td>\r\n");
out.write(" <td><b>Priority</b></td>\r\n");
out.write(" <td><b>Appender</b></td>\r\n");
out.write(" </tr>\r\n");
// output for root category
Category cat = Category.getRoot();
out.write(" <tr><td>root</td>\r\n");
out.write(" <td>\r\n");
out.write(" <select size=1 name=\""+ cat.getName() +"\">");
for (int i = 0; i < prios.length; i++) {
if (cat.getChainedPriority().toString().equals(prios[i].toString()))
out.write("<option selected>"+prios[i].toString());
else
out.write("<option>"+prios[i].toString());
}
out.write("</select>\r\n");
out.write(" </td>\r\n");
out.write(" <td>\r\n");
for (Enumeration apds = cat.getAllAppenders(); apds.hasMoreElements();) {
Appender apd = (Appender)apds.nextElement();
name = apd.getName();
if (name == null)
name = "<i>(no name)</i>";
out.write(name);
if (apd instanceof AppenderSkeleton) {
try {
AppenderSkeleton apskel = (AppenderSkeleton)apd;
out.write(" [" + apskel.getThreshold().toString() + "]");
} catch (Exception ex) {
}
}
if (apds.hasMoreElements())
out.write(", ");
}
out.write(" </td>\r\n");
out.write(" </tr>\r\n");
// output for all other categories
for (Enumeration en = Category.getCurrentCategories(); en.hasMoreElements();) {
cat = (Category)en.nextElement();
out.write(" <tr>\r\n");
out.write(" <td>" + cat.getName() + "</td>\r\n");
out.write(" <td>\r\n");
out.write(" <select size=1 name=\""+ cat.getName() +"\">");
for (int i = 0; i < prios.length; i++) {
if (cat.getChainedPriority().toString().equals(prios[i].toString()))
out.write("<option selected>"+prios[i].toString());
else
out.write("<option>"+prios[i].toString());
}
out.write("</select>\r\n");
out.write(" </td>\r\n");
out.write(" <td>\r\n");
for (Enumeration apds = cat.getAllAppenders(); apds.hasMoreElements();) {
Appender apd = (Appender)apds.nextElement();
name = apd.getName();
if (name == null)
name = "<i>(no name)</i>";
out.write(name);
if (apd instanceof AppenderSkeleton) {
try {
AppenderSkeleton apskel = (AppenderSkeleton)apd;
out.write(" [" + apskel.getThreshold().toString() + "]");
} catch (Exception ex) {
}
}
if (apds.hasMoreElements())
out.write(", ");
}
out.write(" </td>\r\n");
out.write(" </tr>\r\n");
}
out.write("</table>\r\n");
out.write("<input type=submit value=\"Submit\">");
out.write("</form>");
out.write("</BODY></HTML>\r\n");
out.flush();
return true;
} catch (Exception ex) {
return false;
}
}
}