Author: rpopma
Date: Wed Jan 29 11:40:03 2014
New Revision: 1562419
URL: http://svn.apache.org/r1562419
Log:
LOG4J2-492 escape contextName when unregistering LoggerContext, quote escaped
newlines, drop \r characters
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/jmx/ServerTest.java
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java?rev=1562419&r1=1562418&r2=1562419&view=diff
==============================================================================
---
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
(original)
+++
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
Wed Jan 29 11:40:03 2014
@@ -88,12 +88,12 @@ public final class Server {
needsQuotes = true;
break;
case '\r':
- // replace by \\r, no need to quote
- sb.append("\\r");
+ // drop \r characters: \\r gives "invalid escape sequence"
continue;
case '\n':
- // replace by \\n, no need to quote
+ // replace \n characters with \\n sequence
sb.append("\\n");
+ needsQuotes = true;
continue;
}
sb.append(c);
@@ -260,13 +260,14 @@ public final class Server {
*/
public static void unregisterContext(String contextName, MBeanServer mbs) {
final String pattern = LoggerContextAdminMBean.PATTERN;
- final String search = String.format(pattern, contextName, "*");
+ final String safeContextName = escape(contextName);
+ final String search = String.format(pattern, safeContextName, "*");
unregisterAllMatching(search, mbs); // unregister context mbean
- unregisterLoggerConfigs(contextName, mbs);
- unregisterAppenders(contextName, mbs);
- unregisterAsyncAppenders(contextName, mbs);
- unregisterAsyncLoggerRingBufferAdmins(contextName, mbs);
- unregisterAsyncLoggerConfigRingBufferAdmins(contextName, mbs);
+ unregisterLoggerConfigs(safeContextName, mbs);
+ unregisterAppenders(safeContextName, mbs);
+ unregisterAsyncAppenders(safeContextName, mbs);
+ unregisterAsyncLoggerRingBufferAdmins(safeContextName, mbs);
+ unregisterAsyncLoggerConfigRingBufferAdmins(safeContextName, mbs);
}
private static void registerStatusLogger(final MBeanServer mbs, final
Executor executor)
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/jmx/ServerTest.java
URL:
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/jmx/ServerTest.java?rev=1562419&r1=1562418&r2=1562419&view=diff
==============================================================================
---
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/jmx/ServerTest.java
(original)
+++
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/jmx/ServerTest.java
Wed Jan 29 11:40:03 2014
@@ -104,7 +104,7 @@ public class ServerTest {
public void testEscapeEscapesLineFeed() throws Exception {
final String ctx = "a\rc";
final String ctxName = Server.escape(ctx);
- assertEquals("a\\rc", ctxName);
+ assertEquals("ac", ctxName);
new ObjectName(String.format(LoggerContextAdminMBean.PATTERN,
ctxName));
// no MalformedObjectNameException = success
}
@@ -113,7 +113,7 @@ public class ServerTest {
public void testEscapeEscapesCarriageReturn() throws Exception {
final String ctx = "a\nc";
final String ctxName = Server.escape(ctx);
- assertEquals("a\\nc", ctxName);
+ assertEquals("\"a\\nc\"", ctxName);
new ObjectName(String.format(LoggerContextAdminMBean.PATTERN,
ctxName));
// no MalformedObjectNameException = success
}