HADOOP-13098. Dynamic LogLevel setting page should accept case-insensitive log level string. (Junping Du via xyao)
This commit is contained in:
parent
f305d9c0f6
commit
4e5e87ddd4
|
@ -142,27 +142,33 @@ public class LogLevel {
|
||||||
private static void process(org.apache.log4j.Logger log, String level,
|
private static void process(org.apache.log4j.Logger log, String level,
|
||||||
PrintWriter out) throws IOException {
|
PrintWriter out) throws IOException {
|
||||||
if (level != null) {
|
if (level != null) {
|
||||||
if (!level.equals(org.apache.log4j.Level.toLevel(level).toString())) {
|
if (!level.equalsIgnoreCase(org.apache.log4j.Level.toLevel(level)
|
||||||
out.println(MARKER + "Bad level : <b>" + level + "</b><br />");
|
.toString())) {
|
||||||
|
out.println(MARKER + "Bad Level : <b>" + level + "</b><br />");
|
||||||
} else {
|
} else {
|
||||||
log.setLevel(org.apache.log4j.Level.toLevel(level));
|
log.setLevel(org.apache.log4j.Level.toLevel(level));
|
||||||
out.println(MARKER + "Setting Level to " + level + " ...<br />");
|
out.println(MARKER + "Setting Level to " + level + " ...<br />");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out.println(MARKER
|
out.println(MARKER
|
||||||
+ "Effective level: <b>" + log.getEffectiveLevel() + "</b><br />");
|
+ "Effective Level: <b>" + log.getEffectiveLevel() + "</b><br />");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void process(java.util.logging.Logger log, String level,
|
private static void process(java.util.logging.Logger log, String level,
|
||||||
PrintWriter out) throws IOException {
|
PrintWriter out) throws IOException {
|
||||||
if (level != null) {
|
if (level != null) {
|
||||||
log.setLevel(java.util.logging.Level.parse(level));
|
String levelToUpperCase = level.toUpperCase();
|
||||||
|
try {
|
||||||
|
log.setLevel(java.util.logging.Level.parse(levelToUpperCase));
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
out.println(MARKER + "Bad Level : <b>" + level + "</b><br />");
|
||||||
|
}
|
||||||
out.println(MARKER + "Setting Level to " + level + " ...<br />");
|
out.println(MARKER + "Setting Level to " + level + " ...<br />");
|
||||||
}
|
}
|
||||||
|
|
||||||
java.util.logging.Level lev;
|
java.util.logging.Level lev;
|
||||||
for(; (lev = log.getLevel()) == null; log = log.getParent());
|
for(; (lev = log.getLevel()) == null; log = log.getParent());
|
||||||
out.println(MARKER + "Effective level: <b>" + lev + "</b><br />");
|
out.println(MARKER + "Effective Level: <b>" + lev + "</b><br />");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import junit.framework.TestCase;
|
||||||
import org.apache.commons.logging.*;
|
import org.apache.commons.logging.*;
|
||||||
import org.apache.commons.logging.impl.*;
|
import org.apache.commons.logging.impl.*;
|
||||||
import org.apache.log4j.*;
|
import org.apache.log4j.*;
|
||||||
|
import org.junit.Assert;
|
||||||
|
|
||||||
public class TestLogLevel extends TestCase {
|
public class TestLogLevel extends TestCase {
|
||||||
static final PrintStream out = System.out;
|
static final PrintStream out = System.out;
|
||||||
|
@ -42,12 +43,13 @@ public class TestLogLevel extends TestCase {
|
||||||
log.debug("log.debug1");
|
log.debug("log.debug1");
|
||||||
log.info("log.info1");
|
log.info("log.info1");
|
||||||
log.error("log.error1");
|
log.error("log.error1");
|
||||||
assertTrue(!Level.ERROR.equals(log.getEffectiveLevel()));
|
Assert.assertNotEquals("Get default Log Level which shouldn't be ERROR.",
|
||||||
|
Level.ERROR, log.getEffectiveLevel());
|
||||||
|
|
||||||
HttpServer2 server = new HttpServer2.Builder().setName("..")
|
HttpServer2 server = new HttpServer2.Builder().setName("..")
|
||||||
.addEndpoint(new URI("http://localhost:0")).setFindPort(true)
|
.addEndpoint(new URI("http://localhost:0")).setFindPort(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
server.start();
|
server.start();
|
||||||
String authority = NetUtils.getHostPortString(server
|
String authority = NetUtils.getHostPortString(server
|
||||||
.getConnectorAddress(0));
|
.getConnectorAddress(0));
|
||||||
|
@ -67,7 +69,8 @@ public class TestLogLevel extends TestCase {
|
||||||
log.debug("log.debug2");
|
log.debug("log.debug2");
|
||||||
log.info("log.info2");
|
log.info("log.info2");
|
||||||
log.error("log.error2");
|
log.error("log.error2");
|
||||||
assertTrue(Level.ERROR.equals(log.getEffectiveLevel()));
|
assertEquals("Try setting log level: ERROR from servlet.", Level.ERROR,
|
||||||
|
log.getEffectiveLevel());
|
||||||
|
|
||||||
//command line
|
//command line
|
||||||
String[] args = {"-setlevel", authority, logName, Level.DEBUG.toString()};
|
String[] args = {"-setlevel", authority, logName, Level.DEBUG.toString()};
|
||||||
|
@ -75,7 +78,35 @@ public class TestLogLevel extends TestCase {
|
||||||
log.debug("log.debug3");
|
log.debug("log.debug3");
|
||||||
log.info("log.info3");
|
log.info("log.info3");
|
||||||
log.error("log.error3");
|
log.error("log.error3");
|
||||||
assertTrue(Level.DEBUG.equals(log.getEffectiveLevel()));
|
assertEquals("Try setting log level: DEBUG via command line", Level.DEBUG,
|
||||||
|
log.getEffectiveLevel());
|
||||||
|
|
||||||
|
// Test mixed upper case and lower case in level string.
|
||||||
|
String[] args2 = {"-setlevel", authority, logName, "Info"};
|
||||||
|
LogLevel.main(args2);
|
||||||
|
log.debug("log.debug4");
|
||||||
|
log.info("log.info4");
|
||||||
|
log.error("log.error4");
|
||||||
|
assertEquals("Try setting log level: Info via command line.", Level.INFO,
|
||||||
|
log.getEffectiveLevel());
|
||||||
|
|
||||||
|
// Test "Error" instead of "ERROR" should work for servlet
|
||||||
|
URL newUrl = new URL("http://" + authority + "/logLevel?log=" + logName
|
||||||
|
+ "&level=" + "Error");
|
||||||
|
out.println("*** Connecting to " + newUrl);
|
||||||
|
connection = newUrl.openConnection();
|
||||||
|
connection.connect();
|
||||||
|
|
||||||
|
BufferedReader in2 = new BufferedReader(new InputStreamReader(
|
||||||
|
connection.getInputStream()));
|
||||||
|
for(String line; (line = in2.readLine()) != null; out.println(line));
|
||||||
|
in2.close();
|
||||||
|
|
||||||
|
log.debug("log.debug5");
|
||||||
|
log.info("log.info5");
|
||||||
|
log.error("log.error5");
|
||||||
|
assertEquals("Try setting log level: Error via servlet.", Level.ERROR,
|
||||||
|
log.getEffectiveLevel());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
out.println(testlog.getClass() + " not tested.");
|
out.println(testlog.getClass() + " not tested.");
|
||||||
|
|
Loading…
Reference in New Issue