You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/08/20 02:11:55 UTC
[2/3] logging-log4j2 git commit: Fix attributes not being merged in
composite configurations
Fix attributes not being merged in composite configurations
LOG4J2-1529
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/dbe8c3ab
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/dbe8c3ab
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/dbe8c3ab
Branch: refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure
Commit: dbe8c3abce06c07a93c071e7d87c5ce6ce1a28c2
Parents: f6dc776
Author: Matt Sicker <bo...@gmail.com>
Authored: Fri Aug 19 20:48:48 2016 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Fri Aug 19 20:48:58 2016 -0500
----------------------------------------------------------------------
.../config/composite/DefaultMergeStrategy.java | 1 +
.../core/config/CompositeConfigurationTest.java | 34 +++++++++++++--
.../log4j-comp-logger-attr-override.json | 38 +++++++++++++++++
.../test/resources/log4j-comp-logger-root.xml | 44 ++++++++++++++++++++
src/changes/changes.xml | 4 +-
5 files changed, 116 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dbe8c3ab/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
index c799e1d..9eccdf5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
@@ -155,6 +155,7 @@ public class DefaultMergeStrategy implements MergeStrategy {
final Node targetNode = getLoggerNode(targetChildNode, node.getAttributes().get(NAME));
final Node loggerNode = new Node(targetChildNode, node.getName(), node.getType());
if (targetNode != null) {
+ targetNode.getAttributes().putAll(node.getAttributes());
for (final Node sourceLoggerChild : node.getChildren()) {
if (isFilterNode(sourceLoggerChild)) {
boolean foundFilter = false;
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dbe8c3ab/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CompositeConfigurationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CompositeConfigurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CompositeConfigurationTest.java
index 8482cf4..1e78cac 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CompositeConfigurationTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/CompositeConfigurationTest.java
@@ -16,12 +16,9 @@
*/
package org.apache.logging.log4j.core.config;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
import java.util.Map;
+import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.appender.FileAppender;
@@ -32,6 +29,8 @@ import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
+import static org.junit.Assert.*;
+
public class CompositeConfigurationTest {
/*
@Test
@@ -129,6 +128,33 @@ public class CompositeConfigurationTest {
};
runTest(lcr, test);
}
+
+ @Test
+ public void testAttributeMergeForLoggers() {
+ final LoggerContextRule lcr = new LoggerContextRule("classpath:log4j-comp-logger-root.xml,log4j-comp-logger-attr-override.json");
+ final Statement test = new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ final CompositeConfiguration config = (CompositeConfiguration) lcr.getConfiguration();
+ //Test for Root log level override
+ assertEquals("Expected Root logger log level to be WARN", Level.WARN, config.getRootLogger().getLevel());
+
+ //Test for cat2 level override
+ LoggerConfig cat2 = config.getLogger("cat2");
+ assertEquals("Expected cat2 log level to be INFO", Level.INFO, cat2.getLevel());
+
+ //Test for cat2 additivity override
+ assertTrue("Expected cat2 additivity to be true", cat2.isAdditive());
+
+ //Regression
+ //Check level on cat3 (not present in root config)
+ assertEquals("Expected cat3 log level to be ERROR", Level.ERROR, config.getLogger("cat3").getLevel());
+ //Check level on cat1 (not present in overriden config)
+ assertEquals("Expected cat1 log level to be DEBUG", Level.DEBUG, config.getLogger("cat1").getLevel());
+ }
+ };
+ runTest(lcr, test);
+ }
/*
@Test
public void overrideFilter() {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dbe8c3ab/log4j-core/src/test/resources/log4j-comp-logger-attr-override.json
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/log4j-comp-logger-attr-override.json b/log4j-core/src/test/resources/log4j-comp-logger-attr-override.json
new file mode 100644
index 0000000..a6e28aa
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-comp-logger-attr-override.json
@@ -0,0 +1,38 @@
+{
+ "Configuration" : {
+ "status": "error",
+ "name": "LoggerConfigTest",
+ "properties" : {
+ "property" : [{
+ "name" : "filename",
+ "value": "target/composite.log"
+ }]
+ },
+ "Loggers" : {
+ "logger" : [
+ {
+ "name" : "cat2",
+ "level" : "info",
+ "additivity" : true,
+ "AppenderRef" : {
+ "ref" : "File"
+ }
+
+ },
+ {
+ "name" : "cat3",
+ "level" : "error",
+ "AppenderRef" : {
+ "ref" : "STDOUT"
+ }
+ }
+ ],
+ "Root" : {
+ "level" : "warn",
+ "AppenderRef" : [{
+ "ref" : "File"
+ }]
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dbe8c3ab/log4j-core/src/test/resources/log4j-comp-logger-root.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/log4j-comp-logger-root.xml b/log4j-core/src/test/resources/log4j-comp-logger-root.xml
new file mode 100644
index 0000000..dcf2605
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-comp-logger-root.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<Configuration status="ERROR" name="LoggerConfigTest">
+ <Appenders>
+ <Console name="STDOUT">
+ <PatternLayout pattern="%m%n"/>
+ </Console>
+ <File name="File" fileName="${filename}" bufferedIO="false">
+ <PatternLayout>
+ <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
+ </PatternLayout>
+ </File>
+ </Appenders>
+
+ <Loggers>
+ <Logger name="cat1" level="debug" additivity="false">
+ <AppenderRef ref="File"/>
+ </Logger>
+
+ <Logger name="cat2" level="debug" additivity="false">
+ <AppenderRef ref="File"/>
+ </Logger>
+ <Root>
+ <AppenderRef ref="STDOUT" />
+ </Root>
+ </Loggers>
+
+</Configuration>
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dbe8c3ab/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6664fde..767e097 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,7 +24,9 @@
</properties>
<body>
<release version="2.7" date="2016-MM-DD" description="GA Release 2.7">
-
+ <action issue="LOG4J2-1529" dev="mattsicker" type="fix" due-to="Sridevi Narra">
+ Attributes are not merged properly in composite configurations.
+ </action>
<action issue="LOG4J2-1527" dev="rpopma" type="fix" due-to="Jose Leon">
Prevent NPE in RingBufferLogEvent.getFormattedMessage() when used in web applications.
</action>