You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2014/07/25 15:00:09 UTC
svn commit: r1613427 - in /logging/log4j/log4j2/trunk:
log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/
log4j-core/src/test/java/org/apache/logging/log4j/core/config/
log4j-core/src/test/resources/ src/changes/
Author: ggregory
Date: Fri Jul 25 13:00:09 2014
New Revision: 1613427
URL: http://svn.apache.org/r1613427
Log:
[LOG4J2-742] XInclude not working with relative path.
Added:
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java (with props)
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-xinclude.xml
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java?rev=1613427&r1=1613426&r2=1613427&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java Fri Jul 25 13:00:09 2014
@@ -131,6 +131,7 @@ public class XmlConfiguration extends Ab
configStream.close();
}
final InputSource source = new InputSource(new ByteArrayInputStream(buffer));
+ source.setSystemId(configSource.getLocation());
final Document document = newDocumentBuilder().parse(source);
rootElement = document.getDocumentElement();
final Map<String, String> attrs = processAttributes(rootNode, rootElement);
Added: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java?rev=1613427&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java Fri Jul 25 13:00:09 2014
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.logging.log4j.core.config;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.security.SecureRandom;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.filter.ThreadContextMapFilter;
+import org.apache.logging.log4j.junit.CleanFiles;
+import org.apache.logging.log4j.junit.InitialLoggerContext;
+import org.apache.logging.log4j.util.Strings;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import static org.hamcrest.CoreMatchers.*;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests XInclude.
+ */
+@RunWith(Parameterized.class)
+public class XIncludeTest {
+
+ private static final String LOGGER_NAME = "org.apache.logging.log4j.test1.Test";
+ private static final String FILE_LOGGER_NAME = "org.apache.logging.log4j.test2.Test";
+ private static final String APPENDER_NAME = "STDOUT";
+
+ private final String logFileName;
+
+ @Rule
+ public TestRule rules;
+
+ private final InitialLoggerContext init;
+
+ private LoggerContext ctx;
+
+ private final SecureRandom random = new SecureRandom();
+
+ public XIncludeTest(final String configFileName, final String logFileName) {
+ this.logFileName = logFileName;
+ this.init = new InitialLoggerContext(configFileName);
+ rules = RuleChain.outerRule(new CleanFiles(logFileName)).around(this.init);
+ }
+
+ @Parameters
+ public static Collection<Object[]> data() {
+ return Arrays.asList(
+ new Object[][]{
+ {"classpath:log4j-xinclude.xml", "target/test-xinclude.log"},
+ }
+ );
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ this.ctx = this.init.getContext();
+ }
+
+ @Test
+ public void testConfiguredAppenders() throws Exception {
+ final Configuration configuration = this.ctx.getConfiguration();
+ final Map<String, Appender> appenders = configuration.getAppenders();
+ assertThat(appenders, is(notNullValue()));
+ assertThat(appenders.size(), is(equalTo(3)));
+ }
+
+ @Test
+ public void testLogger() throws Exception {
+ final Logger logger = this.ctx.getLogger(LOGGER_NAME);
+ assertThat(logger, is(instanceOf(org.apache.logging.log4j.core.Logger.class)));
+ final org.apache.logging.log4j.core.Logger l = (org.apache.logging.log4j.core.Logger) logger;
+ assertThat(l.getLevel(), is(equalTo(Level.DEBUG)));
+ assertThat(l.filterCount(), is(equalTo(1)));
+ final Iterator<Filter> iterator = l.getFilters();
+ assertThat(iterator.hasNext(), is(true));
+ final Filter filter = iterator.next();
+ assertThat(filter, is(instanceOf(ThreadContextMapFilter.class)));
+ final Map<String, Appender> appenders = l.getAppenders();
+ assertThat(appenders, is(notNullValue()));
+ assertThat(appenders.size(), is(equalTo(1)));
+ final Appender appender = appenders.get(APPENDER_NAME);
+ assertThat(appender, is(notNullValue()));
+ assertThat(appender.getName(), is(equalTo("STDOUT")));
+ }
+
+ @Test
+ public void testLogToFile() throws Exception {
+ final Logger logger = this.ctx.getLogger(FILE_LOGGER_NAME);
+ final long random = this.random.nextLong();
+ logger.debug("This is test message number {}", random);
+ int count = 0;
+ String line = Strings.EMPTY;
+ final BufferedReader in = new BufferedReader(new FileReader(this.logFileName));
+ try {
+ while (in.ready()) {
+ ++count;
+ line = in.readLine();
+ }
+ } finally {
+ in.close();
+ }
+ assertThat(count, is(equalTo(1)));
+ assertThat(line, endsWith(Long.toString(random)));
+ }
+
+}
Propchange: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/XIncludeTest.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-xinclude.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-xinclude.xml?rev=1613427&r1=1613426&r2=1613427&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-xinclude.xml (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j-xinclude.xml Fri Jul 25 13:00:09 2014
@@ -19,9 +19,9 @@
<Configuration xmlns:xi="http://www.w3.org/2001/XInclude"
status="OFF" name="XMLConfigTest">
<Properties>
- <Property name="filename">target/test.log</Property>
+ <Property name="filename">target/test-xinclude.log</Property>
</Properties>
<ThresholdFilter level="debug"/>
- <xi:include href="target/test-classes/log4j-xinclude-appenders.xml" />
- <xi:include href="target/test-classes/log4j-xinclude-loggers.xml" />
-</Configuration>
\ No newline at end of file
+ <xi:include href="log4j-xinclude-appenders.xml" />
+ <xi:include href="log4j-xinclude-loggers.xml" />
+</Configuration>
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1613427&r1=1613426&r2=1613427&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Fri Jul 25 13:00:09 2014
@@ -22,6 +22,9 @@
</properties>
<body>
<release version="?" date="2014-mm-dd" description="?">
+ <action issue="LOG4J2-742" dev="ggreory" type="fix" due-to="Pascal Chollet">
+ XInclude not working with relative path.
+ </action>
<action issue="LOG4J2-740" dev="mattsicker" type="fix" due-to="Kosta Krauth">
Fixed typo in webapp manual regarding sample web.xml file.
</action>