You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2014/04/22 08:06:41 UTC
svn commit: r1589024 - in /logging/log4j/log4j2/trunk:
log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/
log4j-core/src/test/java/org/apache/logging/log4j/core/
log4j-core/src/test/resources/ src/changes/
Author: rgoers
Date: Tue Apr 22 06:06:41 2014
New Revision: 1589024
URL: http://svn.apache.org/r1589024
Log:
A StringIndexOutOfBounds exception could occur during property substitution.
Added:
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java
- copied, changed from r1586822, logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java?rev=1589024&r1=1589023&r2=1589024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/StrSubstitutor.java Tue Apr 22 06:06:41 2014
@@ -814,7 +814,7 @@ public class StrSubstitutor {
if (priorVariables == null) {
priorVariables = new ArrayList<String>();
priorVariables.add(new String(chars,
- offset, length));
+ offset, length + lengthChange));
}
// handle cyclic substitution
Copied: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java (from r1586822, logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java)
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java?p2=logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java&p1=logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java&r1=1586822&r2=1589024&rev=1589024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/HostNameTest.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/LookupTest.java Tue Apr 22 06:06:41 2014
@@ -17,11 +17,13 @@
package org.apache.logging.log4j.core;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.appender.RollingFileAppender;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.helpers.Constants;
import org.apache.logging.log4j.core.helpers.NetUtils;
+import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.test.appender.ListAppender;
import org.junit.AfterClass;
@@ -38,13 +40,11 @@ import static org.junit.Assert.assertTru
/**
*
*/
-public class HostNameTest {
+public class LookupTest {
- private static final String CONFIG = "log4j-test2.xml";
+ private static final String CONFIG = "log4j-lookup.xml";
private static Configuration config;
- private static ListAppender app;
- private static ListAppender host;
- private static RollingFileAppender hostFile;
+ private static ConsoleAppender app;
private static LoggerContext ctx;
@BeforeClass
@@ -60,43 +60,20 @@ public class HostNameTest {
StatusLogger.getLogger().reset();
}
- @Before
- public void before() {
+ @Test
+ public void testHostname() {
config = ctx.getConfiguration();
for (final Map.Entry<String, Appender> entry : config.getAppenders().entrySet()) {
- if (entry.getKey().equals("List")) {
- app = (ListAppender) entry.getValue();
- } else if (entry.getKey().equals("HostTest")) {
- host = (ListAppender) entry.getValue();
- } else if (entry.getKey().equals("HostFile")) {
- hostFile = (RollingFileAppender) entry.getValue();
+ if (entry.getKey().equals("console")) {
+ app = (ConsoleAppender) entry.getValue();
}
}
- assertNotNull("No Host FileAppender", hostFile);
- app.clear();
- host.clear();
- }
-
-
- @Test
- public void testHostname() {
- final org.apache.logging.log4j.Logger testLogger = LogManager.getLogger("org.apache.logging.log4j.hosttest");
- testLogger.debug("Hello, {}", "World");
- final List<String> msgs = host.getMessages();
- assertTrue("Incorrect number of events. Expected 1, actual " + msgs.size(), msgs.size() == 1);
- String expected = NetUtils.getLocalHostname() + Constants.LINE_SEP;
- assertTrue("Incorrect hostname - expected " + expected + " actual - " + msgs.get(0),
- msgs.get(0).endsWith(expected));
- assertNotNull("No Host FileAppender file name", hostFile.getFileName());
- expected = "target/" + NetUtils.getLocalHostname() + ".log";
- String name = hostFile.getFileName();
- assertTrue("Incorrect HostFile FileAppender file name - expected " + expected + " actual - " + name,
- name.equals(expected));
- name = hostFile.getFilePattern();
- assertNotNull("No file pattern", name);
- expected = "target/" + NetUtils.getLocalHostname() + "-%d{MM-dd-yyyy}-%i.log";
- assertTrue("Incorrect HostFile FileAppender file pattern - expected " + expected + " actual - " + name,
- name.equals(expected));
-
+ assertNotNull(app);
+ Layout layout = app.getLayout();
+ assertNotNull("No Layout", layout);
+ assertTrue("Layout is not a PatternLayout", layout instanceof PatternLayout);
+ String pattern = ((PatternLayout) layout).getConversionPattern();
+ assertNotNull("No conversion pattern", pattern);
+ assertTrue("No filters", pattern.contains("org.junit,org.apache.maven,org.eclipse,sun.reflect,java.lang.reflect"));
}
}
Added: logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml?rev=1589024&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-lookup.xml Tue Apr 22 06:06:41 2014
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration status="warn">
+ <properties>
+ <property name="filters">org.junit,org.apache.maven,org.eclipse,sun.reflect,java.lang.reflect</property>
+ </properties>
+ <appenders>
+ <console name="console" target="SYSTEM_OUT">
+ <patternLayout pattern="%d{HH:mm:ss,SSS} [%t] %-5level [$${date:yyyyMMdd.HHmmSS}] %logger{1}.%method:%line - %msg%n%rEx{filters(${filters})}" />
+ </console>
+ </appenders>
+ <loggers>
+ <root level="warn">
+ <appenderRef ref="console" />
+ </root>
+ </loggers>
+</configuration>
\ No newline at end of file
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1589024&r1=1589023&r2=1589024&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Tue Apr 22 06:06:41 2014
@@ -21,6 +21,9 @@
</properties>
<body>
<release version="2.0-rc2" date="2014-MM-DD" description="Bug fixes and enhancements">
+ <action issue="LOG4J2-448" dev="rgoers" type="fix" due-to="X86core">
+ A StringIndexOutOfBounds exception could occur during property substitution.
+ </action>
<action issue="LOG4J2-597" dev="rgoers" type="fix">
StatusLogger was not skipping multiple instances of the FQCN class, causing messages from classes in
the Verbose list to be printed.