Repository: logging-log4j2 Updated Branches: refs/heads/master e33e950d7 -> 2e2b2d9bb
LOG4J2-2002 Avoid null attribute values in DefaultConfigurationBuilder Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2e2b2d9b Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2e2b2d9b Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2e2b2d9b Branch: refs/heads/master Commit: 2e2b2d9bb1cd20d35df2b1fa4ffc8ea8c5825b49 Parents: e33e950 Author: Mikael Ståldal <mik...@staldal.nu> Authored: Sat Jan 6 18:40:24 2018 +0100 Committer: Mikael Ståldal <mik...@staldal.nu> Committed: Sat Jan 6 18:40:24 2018 +0100 ---------------------------------------------------------------------- .../builder/api/ConfigurationBuilder.java | 58 ++++++++++++++++++++ .../impl/DefaultConfigurationBuilder.java | 39 +++++++++++++ .../impl/DefaultLoggerComponentBuilder.java | 16 ++++-- .../impl/DefaultRootLoggerComponentBuilder.java | 16 ++++-- .../builder/ConfigurationBuilderTest.java | 5 ++ src/changes/changes.xml | 3 + 6 files changed, 129 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java index c88cb09..e10f292 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.java @@ -134,6 +134,22 @@ public interface ConfigurationBuilder<T extends Configuration> extends Builder<T */ AppenderRefComponentBuilder newAppenderRef(String ref); + + /** + * Returns a builder for creating Async Loggers. + * @param name The name of the Logger. + * @return A new LoggerComponentBuilder. + */ + LoggerComponentBuilder newAsyncLogger(String name); + + /** + * Returns a builder for creating Async Loggers. + * @param name The name of the Logger. + * @param includeLocation If true include location information. + * @return A new LoggerComponentBuilder. + */ + LoggerComponentBuilder newAsyncLogger(String name, boolean includeLocation); + /** * Returns a builder for creating Async Loggers. * @param name The name of the Logger. @@ -170,6 +186,20 @@ public interface ConfigurationBuilder<T extends Configuration> extends Builder<T /** * Returns a builder for creating the async root Logger. + * @return A new RootLoggerComponentBuilder. + */ + RootLoggerComponentBuilder newAsyncRootLogger(); + + + /** + * Returns a builder for creating the async root Logger. + * @param includeLocation If true include location information. + * @return A new RootLoggerComponentBuilder. + */ + RootLoggerComponentBuilder newAsyncRootLogger(boolean includeLocation); + + /** + * Returns a builder for creating the async root Logger. * @param level The logging Level to be assigned to the root Logger. * @return A new RootLoggerComponentBuilder. */ @@ -279,6 +309,21 @@ public interface ConfigurationBuilder<T extends Configuration> extends Builder<T /** * Returns a builder for creating Loggers. * @param name The name of the Logger. + * @return A new LoggerComponentBuilder. + */ + LoggerComponentBuilder newLogger(String name); + + /** + * Returns a builder for creating Loggers. + * @param name The name of the Logger. + * @param includeLocation If true include location information. + * @return A new LoggerComponentBuilder. + */ + LoggerComponentBuilder newLogger(String name, boolean includeLocation); + + /** + * Returns a builder for creating Loggers. + * @param name The name of the Logger. * @param level The logging Level to be assigned to the Logger. * @return A new LoggerComponentBuilder. */ @@ -312,6 +357,19 @@ public interface ConfigurationBuilder<T extends Configuration> extends Builder<T /** * Returns a builder for creating the root Logger. + * @return A new RootLoggerComponentBuilder. + */ + RootLoggerComponentBuilder newRootLogger(); + + /** + * Returns a builder for creating the root Logger. + * @param includeLocation If true include location information. + * @return A new RootLoggerComponentBuilder. + */ + RootLoggerComponentBuilder newRootLogger(boolean includeLocation); + + /** + * Returns a builder for creating the root Logger. * @param level The logging Level to be assigned to the root Logger. * @return A new RootLoggerComponentBuilder. */ http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java index 472ac3d..1559b01 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java @@ -356,6 +356,16 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement } @Override + public LoggerComponentBuilder newAsyncLogger(String name) { + return new DefaultLoggerComponentBuilder(this, name, null, "AsyncLogger"); + } + + @Override + public LoggerComponentBuilder newAsyncLogger(String name, boolean includeLocation) { + return new DefaultLoggerComponentBuilder(this, name, null, "AsyncLogger", includeLocation); + } + + @Override public LoggerComponentBuilder newAsyncLogger(final String name, final Level level) { return new DefaultLoggerComponentBuilder(this, name, level.toString(), "AsyncLogger"); } @@ -376,6 +386,16 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement } @Override + public RootLoggerComponentBuilder newAsyncRootLogger() { + return new DefaultRootLoggerComponentBuilder(this, "AsyncRoot"); + } + + @Override + public RootLoggerComponentBuilder newAsyncRootLogger(boolean includeLocation) { + return new DefaultRootLoggerComponentBuilder(this, null, "AsyncRoot", includeLocation); + } + + @Override public RootLoggerComponentBuilder newAsyncRootLogger(final Level level) { return new DefaultRootLoggerComponentBuilder(this, level.toString(), "AsyncRoot"); } @@ -443,6 +463,15 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement return new DefaultLayoutComponentBuilder(this, type); } + @Override + public LoggerComponentBuilder newLogger(String name) { + return new DefaultLoggerComponentBuilder(this, name, null); + } + + @Override + public LoggerComponentBuilder newLogger(String name, boolean includeLocation) { + return new DefaultLoggerComponentBuilder(this, name, null, includeLocation); + } @Override public LoggerComponentBuilder newLogger(final String name, final Level level) { @@ -465,6 +494,16 @@ public class DefaultConfigurationBuilder<T extends BuiltConfiguration> implement } @Override + public RootLoggerComponentBuilder newRootLogger() { + return new DefaultRootLoggerComponentBuilder(this, null); + } + + @Override + public RootLoggerComponentBuilder newRootLogger(boolean includeLocation) { + return new DefaultRootLoggerComponentBuilder(this, null, includeLocation); + } + + @Override public RootLoggerComponentBuilder newRootLogger(final Level level) { return new DefaultRootLoggerComponentBuilder(this, level.toString()); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java index 891e795..b982a9a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultLoggerComponentBuilder.java @@ -36,7 +36,9 @@ class DefaultLoggerComponentBuilder extends DefaultComponentAndConfigurationBuil public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String name, final String level) { super(builder, name, "Logger"); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } } /** @@ -49,7 +51,9 @@ class DefaultLoggerComponentBuilder extends DefaultComponentAndConfigurationBuil public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String name, final String level, final boolean includeLocation) { super(builder, name, "Logger"); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } addAttribute("includeLocation", includeLocation); } @@ -63,7 +67,9 @@ class DefaultLoggerComponentBuilder extends DefaultComponentAndConfigurationBuil public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String name, final String level, final String type) { super(builder, name, type); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } } /** @@ -77,7 +83,9 @@ class DefaultLoggerComponentBuilder extends DefaultComponentAndConfigurationBuil public DefaultLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String name, final String level, final String type, final boolean includeLocation) { super(builder, name, type); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } addAttribute("includeLocation", includeLocation); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java index dcf0b9b..76b112f 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultRootLoggerComponentBuilder.java @@ -35,7 +35,9 @@ class DefaultRootLoggerComponentBuilder extends DefaultComponentAndConfiguration public DefaultRootLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String level) { super(builder, "", "Root"); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } } /** @@ -47,7 +49,9 @@ class DefaultRootLoggerComponentBuilder extends DefaultComponentAndConfiguration public DefaultRootLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String level, final boolean includeLocation) { super(builder, "", "Root"); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } addAttribute("includeLocation", includeLocation); } @@ -60,7 +64,9 @@ class DefaultRootLoggerComponentBuilder extends DefaultComponentAndConfiguration public DefaultRootLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String level, final String type) { super(builder, "", type); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } } @@ -73,7 +79,9 @@ class DefaultRootLoggerComponentBuilder extends DefaultComponentAndConfiguration public DefaultRootLoggerComponentBuilder(final DefaultConfigurationBuilder<? extends Configuration> builder, final String level, final String type, final boolean includeLocation) { super(builder, "", type); - addAttribute("level", level); + if (level != null) { + addAttribute("level", level); + } addAttribute("includeLocation", includeLocation); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java index 7ac91e5..7026848 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java @@ -60,6 +60,8 @@ public class ConfigurationBuilderTest { builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG, true). add(builder.newAppenderRef("Stdout")). addAttribute("additivity", false)); + builder.add(builder.newLogger("org.apache.logging.log4j.core"). + add(builder.newAppenderRef("Stdout"))); builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout"))); builder.addProperty("MyKey", "MyValue"); @@ -96,6 +98,9 @@ public class ConfigurationBuilderTest { INDENT + INDENT + "<Logger name=\"org.apache.logging.log4j\" level=\"DEBUG\" includeLocation=\"true\" additivity=\"false\">" + EOL + INDENT + INDENT + INDENT + "<AppenderRef ref=\"Stdout\"/>" + EOL + INDENT + INDENT + "</Logger>" + EOL + + INDENT + INDENT + "<Logger name=\"org.apache.logging.log4j.core\">" + EOL + + INDENT + INDENT + INDENT + "<AppenderRef ref=\"Stdout\"/>" + EOL + + INDENT + INDENT + "</Logger>" + EOL + INDENT + INDENT + "<Root level=\"ERROR\">" + EOL + INDENT + INDENT + INDENT + "<AppenderRef ref=\"Stdout\"/>" + EOL + INDENT + INDENT + "</Root>" + EOL + http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2e2b2d9b/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 4727548..0f48c06 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -31,6 +31,9 @@ - "remove" - Removed --> <release version="2.10.1" date="2017-xx-xx" description="GA Release 2.10.1"> + <action issue="LOG4J2-2002" dev="mikes" type="fix" due-to="Paul Burrowes"> + Avoid null attribute values in DefaultConfigurationBuilder. + </action> <action issue="LOG4J2-2175" dev="mikes" type="fix" due-to="Behrang Saeedzadeh"> Fix typo in Property Substitution docs. </action>