logging-log4j2 git commit: [LOG4J2-1597] Fix FindBugs warnings.
Repository: logging-log4j2 Updated Branches: refs/heads/master 33765882b -> 53ad0d7d3 [LOG4J2-1597] Fix FindBugs warnings. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/53ad0d7d Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/53ad0d7d Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/53ad0d7d Branch: refs/heads/master Commit: 53ad0d7d32a8f042220c7be4744e3c0e5819c6a9 Parents: 3376588 Author: Gary GregoryAuthored: Tue Sep 20 12:11:08 2016 -0700 Committer: Gary Gregory Committed: Tue Sep 20 12:11:08 2016 -0700 -- .../logging/log4j/core/appender/AppenderSet.java | 13 + 1 file changed, 9 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53ad0d7d/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java index 2f53224..4eed071 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java @@ -48,18 +48,23 @@ public class AppenderSet { @Override public AppenderSet build() { if (configuration == null) { -LOGGER.error("Configuration is missing from AppenderSet"); +LOGGER.error("Configuration is missing from AppenderSet {}", this); +return null; +} +if (node == null) { +LOGGER.error("No node in AppenderSet {}", this); +return null; } final List children = node.getChildren(); -final Map map = new HashMap<>(node == null ? 0 : children.size()); if (children == null) { -LOGGER.error("No child node in the AppenderSet {}", this); +LOGGER.error("No children node in AppenderSet {}", this); return null; } +final Map map = new HashMap<>(children.size()); for (final Node childNode : children) { final String key = childNode.getAttributes().get("name"); if (key == null) { -LOGGER.error("The attribute 'name' is missing from from the node {} in the AppenderSet {}", +LOGGER.error("The attribute 'name' is missing from from the node {} in AppenderSet {}", childNode, children); } else { map.put(key, childNode);
logging-log4j2 git commit: [LOG4J2-1597] Fix NPEs.
Repository: logging-log4j2 Updated Branches: refs/heads/master 60bcf168d -> 33765882b [LOG4J2-1597] Fix NPEs. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/33765882 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/33765882 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/33765882 Branch: refs/heads/master Commit: 33765882bddfd34f8d2913612d3bc2bda9f35e40 Parents: 60bcf16 Author: Gary GregoryAuthored: Tue Sep 20 11:56:23 2016 -0700 Committer: Gary Gregory Committed: Tue Sep 20 11:56:23 2016 -0700 -- .../logging/log4j/core/appender/ScriptAppenderSelector.java | 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/33765882/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java index ae6da0a..7782b96 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java @@ -63,15 +63,19 @@ public class ScriptAppenderSelector extends AbstractAppender { public Appender build() { if (name == null) { LOGGER.error("Name missing."); +return null; } if (script == null) { LOGGER.error("Script missing for ScriptAppenderSelector appender {}", name); +return null; } if (appenderSet == null) { LOGGER.error("AppenderSet missing for ScriptAppenderSelector appender {}", name); +return null; } if (configuration == null) { LOGGER.error("Configuration missing for ScriptAppenderSelector appender {}", name); +return null; } final ScriptManager scriptManager = configuration.getScriptManager(); scriptManager.addScript(script);
logging-log4j2 git commit: [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.
Repository: logging-log4j2 Updated Branches: refs/heads/master 9960888f0 -> 29fe81328 [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/29fe8132 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/29fe8132 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/29fe8132 Branch: refs/heads/master Commit: 29fe81328ad551d7439a73e91a5d81db85709e87 Parents: 9960888 Author: Gary GregoryAuthored: Mon Sep 19 21:51:09 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 21:51:09 2016 -0700 -- src/site/xdoc/manual/appenders.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/29fe8132/src/site/xdoc/manual/appenders.xml -- diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml index 99460a5..874e21a 100644 --- a/src/site/xdoc/manual/appenders.xml +++ b/src/site/xdoc/manual/appenders.xml @@ -3671,7 +3671,7 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { the name of the ScriptAppenderSelector, not the name of the selected appender, in this example, "SelectIt".
[3/9] logging-log4j2 git commit: [LOG4J2-1597]
[LOG4J2-1597] Add Groovy test to make sure all is well with any javax.script engine. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/9a50278f Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/9a50278f Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/9a50278f Branch: refs/heads/master Commit: 9a50278fccd41a282bd3a2d641f1b4e7223c2f31 Parents: c5ee9dc Author: Gary GregoryAuthored: Mon Sep 19 00:05:44 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 00:05:44 2016 -0700 -- .../appender/ScriptSelectorAppenderTest.java| 4 +-- .../log4j-appender-selector-groovy.xml | 35 2 files changed, 37 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java -- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java index e1c8a14..c5095c2 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java @@ -38,11 +38,11 @@ import org.junit.runners.Parameterized; @RunWith(Parameterized.class) public class ScriptSelectorAppenderTest { -@Parameterized.Parameters(name = "{0} {1}") +@Parameterized.Parameters(name = "{0}") public static Object[][] getParameters() { // @formatter:off return new Object[][] { -// { "log4j-appender-selector-groovy.xml" }, +{ "log4j-appender-selector-groovy.xml" }, { "log4j-appender-selector-javascript.xml" }, }; // @formatter:on http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml -- diff --git a/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml new file mode 100644 index 000..4a15273 --- /dev/null +++ b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file
[4/9] logging-log4j2 git commit: [LOG4J2-1597] Remove unused method.
[LOG4J2-1597] Remove unused method. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/123448f5 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/123448f5 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/123448f5 Branch: refs/heads/master Commit: 123448f596299bcb313d2e29c96dfe120072ed7f Parents: 9a50278 Author: Gary GregoryAuthored: Mon Sep 19 00:10:23 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 00:10:23 2016 -0700 -- .../java/org/apache/logging/log4j/core/appender/AppenderSet.java | 4 1 file changed, 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/123448f5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java index 472e456..b5fc59c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java @@ -129,8 +129,4 @@ public class AppenderSet { LOGGER.error("No Appender was configured for name {} " + appenderName); return null; } - -public Map getAppenders() { -return nodeMap; -} }
[8/9] logging-log4j2 git commit: [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.
[LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f8482f1b Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f8482f1b Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f8482f1b Branch: refs/heads/master Commit: f8482f1ba6c83c3345f247d396c62a853fe093e7 Parents: cd570f8 Author: Gary GregoryAuthored: Mon Sep 19 17:06:51 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 17:06:51 2016 -0700 -- .../core/appender/ScriptAppenderSelector.java | 137 +++ .../log4j/core/appender/ScriptSelector.java | 137 --- .../appender/ScriptAppenderSelectorTest.java| 100 ++ .../appender/ScriptSelectorAppenderTest.java| 100 -- .../log4j-appender-selector-groovy.xml | 4 +- .../log4j-appender-selector-javascript.xml | 4 +- 6 files changed, 241 insertions(+), 241 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8482f1b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java new file mode 100644 index 000..ae6da0a --- /dev/null +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java @@ -0,0 +1,137 @@ +/* + * 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.appender; + +import java.io.Serializable; +import java.util.Objects; + +import javax.script.Bindings; + +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.Filter; +import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.plugins.Plugin; +import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute; +import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory; +import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; +import org.apache.logging.log4j.core.config.plugins.PluginElement; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; +import org.apache.logging.log4j.core.script.AbstractScript; +import org.apache.logging.log4j.core.script.ScriptManager; + +@Plugin(name = "ScriptAppenderSelector", category = "Core", elementType = "appender", printObject = true) +public class ScriptAppenderSelector extends AbstractAppender { + +/** + * Builds an appender. + */ +public static final class Builder implements org.apache.logging.log4j.core.util.Builder { + +@PluginElement("AppenderSet") +@Required +private AppenderSet appenderSet; + +@PluginConfiguration +@Required +private Configuration configuration; + +@PluginBuilderAttribute +@Required +private String name; + +@PluginElement("Script") +@Required +private AbstractScript script; + +@Override +public Appender build() { +if (name == null) { +LOGGER.error("Name missing."); +} +if (script == null) { +LOGGER.error("Script missing for ScriptAppenderSelector appender {}", name); +} +if (appenderSet == null) { +LOGGER.error("AppenderSet missing for ScriptAppenderSelector appender {}", name); +} +if (configuration == null) { +LOGGER.error("Configuration missing for ScriptAppenderSelector appender {}", name); +} +final ScriptManager scriptManager =
[1/9] logging-log4j2 git commit: [LOG4J2-1597]
Repository: logging-log4j2 Updated Branches: refs/heads/master d59bb7137 -> 21ac645e0 [LOG4J2-1597] Add a ScriptSelector Appender to create an Appender specified by a Script. First cut. See failing org.apache.logging.log4j.core.appender.ScriptSelectorAppenderTest. See status logger output. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/79d9e113 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/79d9e113 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/79d9e113 Branch: refs/heads/master Commit: 79d9e11373b8246c7725cbf5c115be4a4b7c05f0 Parents: 5599aed Author: Gary GregoryAuthored: Sun Sep 18 21:20:52 2016 -0700 Committer: Gary Gregory Committed: Sun Sep 18 21:20:52 2016 -0700 -- .../log4j/core/appender/AppenderSet.java| 135 ++ .../log4j/core/appender/ScriptSelector.java | 139 +++ .../appender/ScriptSelectorAppenderTest.java| 95 + .../log4j-appender-selector-javascript.xml | 35 + 4 files changed, 404 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79d9e113/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java new file mode 100644 index 000..4403ab4 --- /dev/null +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java @@ -0,0 +1,135 @@ +/* + * 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.appender; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.Node; +import org.apache.logging.log4j.core.config.plugins.Plugin; +import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory; +import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; +import org.apache.logging.log4j.core.config.plugins.PluginNode; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; +import org.apache.logging.log4j.status.StatusLogger; + +/** + * A deferred plugin for appenders. + */ +@Plugin(name = "AppenderSet", category = "Core", printObject = true, deferChildren = true) +public class AppenderSet { + +public static class Builder implements org.apache.logging.log4j.core.util.Builder { + +@PluginNode +private Node node; + +@PluginConfiguration +@Required +private Configuration configuration; + +@Override +public AppenderSet build() { +if (configuration == null) { +LOGGER.error("Configuration is missing from AppenderNodeSet"); +} +final List children = node.getChildren(); +final Map map = new HashMap<>(node == null ? 0 : children.size()); +if (children == null) { +LOGGER.error("No child node in the AppenderSet {}", this); +return null; +} +for (final Node childNode : children) { +final String key = childNode.getAttributes().get("name"); +if (key == null) { +LOGGER.error("The attribute 'name' is missing from from the node {} in the AppenderNodeSet {}", +childNode, children); +} else { +map.put(key, childNode); +} +} +return new AppenderSet(configuration, map); +} + +public Node getNode() { +return node; +} + +public Configuration getConfiguration() { +return configuration; +} + +
[9/9] logging-log4j2 git commit: [LOG4J2-1597]
[LOG4J2-1597] Add a ScriptAppenderSelector to create an Appender specified by a Script. Update changes.xml. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/21ac645e Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/21ac645e Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/21ac645e Branch: refs/heads/master Commit: 21ac645e0528b4f03ac7a448631ca1a8e341673b Parents: f8482f1 Author: Gary GregoryAuthored: Mon Sep 19 17:09:14 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 17:09:14 2016 -0700 -- src/changes/changes.xml | 3 +++ 1 file changed, 3 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/21ac645e/src/changes/changes.xml -- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 1698408..d48f10b 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -159,6 +159,9 @@ RoutingAppender can be configured with scripts. Add Script in a Routes element. + +Add a ScriptAppenderSelector to create an Appender specified by a Script. + (GC) Added support for garbage-free ThreadContext map. Disabled by default, users need to enable this explicitly.
[7/9] logging-log4j2 git commit: [LOG4J2-1597] site docs.
[LOG4J2-1597] site docs. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/cd570f83 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/cd570f83 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/cd570f83 Branch: refs/heads/master Commit: cd570f830cecdee1df86a44494a831c5207b739a Parents: ae159dc Author: Gary GregoryAuthored: Mon Sep 19 00:47:35 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 00:47:35 2016 -0700 -- src/site/site.xml | 1 + src/site/xdoc/manual/appenders.xml | 34 + 2 files changed, 35 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/site.xml -- diff --git a/src/site/site.xml b/src/site/site.xml index 9db99eb..a4da321 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -137,6 +137,7 @@ + http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/xdoc/manual/appenders.xml -- diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml index b82b716..5196f2e 100644 --- a/src/site/xdoc/manual/appenders.xml +++ b/src/site/xdoc/manual/appenders.xml @@ -3657,6 +3657,40 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { ]]> + + + +When the configuration is built, the ScriptSelector appender calls a Script +to compute an appender name. Log4j then creates one of the appender named listed under +AppenderSet using the name of the ScriptSelector. After configuration, Log4j +ignores the ScriptSelector. Log4j only builds the one selected appender from the +configuration tree, and ignores other AppenderSet child nodes. + + +In the following example, the script returns the name "List2". The appender name is recorded under +the name of the ScriptSelector, not the name of the selected appender, in this example, +"SelectIt". + + +
logging-log4j2 git commit: [LOG4J2-1597]
Repository: logging-log4j2 Updated Branches: refs/heads/LOG4J2-1597 f8482f1ba -> 21ac645e0 [LOG4J2-1597] Add a ScriptAppenderSelector to create an Appender specified by a Script. Update changes.xml. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/21ac645e Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/21ac645e Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/21ac645e Branch: refs/heads/LOG4J2-1597 Commit: 21ac645e0528b4f03ac7a448631ca1a8e341673b Parents: f8482f1 Author: Gary GregoryAuthored: Mon Sep 19 17:09:14 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 17:09:14 2016 -0700 -- src/changes/changes.xml | 3 +++ 1 file changed, 3 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/21ac645e/src/changes/changes.xml -- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 1698408..d48f10b 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -159,6 +159,9 @@ RoutingAppender can be configured with scripts. Add Script in a Routes element. + +Add a ScriptAppenderSelector to create an Appender specified by a Script. + (GC) Added support for garbage-free ThreadContext map. Disabled by default, users need to enable this explicitly.
logging-log4j2 git commit: [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector.
Repository: logging-log4j2 Updated Branches: refs/heads/LOG4J2-1597 cd570f830 -> f8482f1ba [LOG4J2-1597] Rename ScriptSelectorAppender to ScriptAppenderSelector. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f8482f1b Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f8482f1b Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f8482f1b Branch: refs/heads/LOG4J2-1597 Commit: f8482f1ba6c83c3345f247d396c62a853fe093e7 Parents: cd570f8 Author: Gary GregoryAuthored: Mon Sep 19 17:06:51 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 17:06:51 2016 -0700 -- .../core/appender/ScriptAppenderSelector.java | 137 +++ .../log4j/core/appender/ScriptSelector.java | 137 --- .../appender/ScriptAppenderSelectorTest.java| 100 ++ .../appender/ScriptSelectorAppenderTest.java| 100 -- .../log4j-appender-selector-groovy.xml | 4 +- .../log4j-appender-selector-javascript.xml | 4 +- 6 files changed, 241 insertions(+), 241 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f8482f1b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java new file mode 100644 index 000..ae6da0a --- /dev/null +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelector.java @@ -0,0 +1,137 @@ +/* + * 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.appender; + +import java.io.Serializable; +import java.util.Objects; + +import javax.script.Bindings; + +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.Filter; +import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.plugins.Plugin; +import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute; +import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory; +import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; +import org.apache.logging.log4j.core.config.plugins.PluginElement; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; +import org.apache.logging.log4j.core.script.AbstractScript; +import org.apache.logging.log4j.core.script.ScriptManager; + +@Plugin(name = "ScriptAppenderSelector", category = "Core", elementType = "appender", printObject = true) +public class ScriptAppenderSelector extends AbstractAppender { + +/** + * Builds an appender. + */ +public static final class Builder implements org.apache.logging.log4j.core.util.Builder { + +@PluginElement("AppenderSet") +@Required +private AppenderSet appenderSet; + +@PluginConfiguration +@Required +private Configuration configuration; + +@PluginBuilderAttribute +@Required +private String name; + +@PluginElement("Script") +@Required +private AbstractScript script; + +@Override +public Appender build() { +if (name == null) { +LOGGER.error("Name missing."); +} +if (script == null) { +LOGGER.error("Script missing for ScriptAppenderSelector appender {}", name); +} +if (appenderSet == null) { +LOGGER.error("AppenderSet missing for ScriptAppenderSelector appender {}", name); +} +if (configuration == null) { +LOGGER.error("Configuration missing for ScriptAppenderSelector appender
logging-log4j2 git commit: [LOG4J2-1597] site docs.
Repository: logging-log4j2 Updated Branches: refs/heads/LOG4J2-1597 ae159dcf8 -> cd570f830 [LOG4J2-1597] site docs. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/cd570f83 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/cd570f83 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/cd570f83 Branch: refs/heads/LOG4J2-1597 Commit: cd570f830cecdee1df86a44494a831c5207b739a Parents: ae159dc Author: Gary GregoryAuthored: Mon Sep 19 00:47:35 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 00:47:35 2016 -0700 -- src/site/site.xml | 1 + src/site/xdoc/manual/appenders.xml | 34 + 2 files changed, 35 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/site.xml -- diff --git a/src/site/site.xml b/src/site/site.xml index 9db99eb..a4da321 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -137,6 +137,7 @@ + http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/cd570f83/src/site/xdoc/manual/appenders.xml -- diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml index b82b716..5196f2e 100644 --- a/src/site/xdoc/manual/appenders.xml +++ b/src/site/xdoc/manual/appenders.xml @@ -3657,6 +3657,40 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { ]]> + + + +When the configuration is built, the ScriptSelector appender calls a Script +to compute an appender name. Log4j then creates one of the appender named listed under +AppenderSet using the name of the ScriptSelector. After configuration, Log4j +ignores the ScriptSelector. Log4j only builds the one selected appender from the +configuration tree, and ignores other AppenderSet child nodes. + + +In the following example, the script returns the name "List2". The appender name is recorded under +the name of the ScriptSelector, not the name of the selected appender, in this example, +"SelectIt". + + +
logging-log4j2 git commit: [LOG4J2-1597] Remove unused method.
Repository: logging-log4j2 Updated Branches: refs/heads/LOG4J2-1597 9a50278fc -> 123448f59 [LOG4J2-1597] Remove unused method. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/123448f5 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/123448f5 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/123448f5 Branch: refs/heads/LOG4J2-1597 Commit: 123448f596299bcb313d2e29c96dfe120072ed7f Parents: 9a50278 Author: Gary GregoryAuthored: Mon Sep 19 00:10:23 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 00:10:23 2016 -0700 -- .../java/org/apache/logging/log4j/core/appender/AppenderSet.java | 4 1 file changed, 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/123448f5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java index 472e456..b5fc59c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java @@ -129,8 +129,4 @@ public class AppenderSet { LOGGER.error("No Appender was configured for name {} " + appenderName); return null; } - -public Map getAppenders() { -return nodeMap; -} }
logging-log4j2 git commit: [LOG4J2-1597]
Repository: logging-log4j2 Updated Branches: refs/heads/LOG4J2-1597 c5ee9dc34 -> 9a50278fc [LOG4J2-1597] Add Groovy test to make sure all is well with any javax.script engine. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/9a50278f Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/9a50278f Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/9a50278f Branch: refs/heads/LOG4J2-1597 Commit: 9a50278fccd41a282bd3a2d641f1b4e7223c2f31 Parents: c5ee9dc Author: Gary GregoryAuthored: Mon Sep 19 00:05:44 2016 -0700 Committer: Gary Gregory Committed: Mon Sep 19 00:05:44 2016 -0700 -- .../appender/ScriptSelectorAppenderTest.java| 4 +-- .../log4j-appender-selector-groovy.xml | 35 2 files changed, 37 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java -- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java index e1c8a14..c5095c2 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptSelectorAppenderTest.java @@ -38,11 +38,11 @@ import org.junit.runners.Parameterized; @RunWith(Parameterized.class) public class ScriptSelectorAppenderTest { -@Parameterized.Parameters(name = "{0} {1}") +@Parameterized.Parameters(name = "{0}") public static Object[][] getParameters() { // @formatter:off return new Object[][] { -// { "log4j-appender-selector-groovy.xml" }, +{ "log4j-appender-selector-groovy.xml" }, { "log4j-appender-selector-javascript.xml" }, }; // @formatter:on http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9a50278f/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml -- diff --git a/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml new file mode 100644 index 000..4a15273 --- /dev/null +++ b/log4j-core/src/test/resources/log4j-appender-selector-groovy.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file
logging-log4j2 git commit: [LOG4J2-1597]
Repository: logging-log4j2 Updated Branches: refs/heads/LOG4J2-1597 [created] 79d9e1137 [LOG4J2-1597] Add a ScriptSelector Appender to create an Appender specified by a Script. First cut. See failing org.apache.logging.log4j.core.appender.ScriptSelectorAppenderTest. See status logger output. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/79d9e113 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/79d9e113 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/79d9e113 Branch: refs/heads/LOG4J2-1597 Commit: 79d9e11373b8246c7725cbf5c115be4a4b7c05f0 Parents: 5599aed Author: Gary GregoryAuthored: Sun Sep 18 21:20:52 2016 -0700 Committer: Gary Gregory Committed: Sun Sep 18 21:20:52 2016 -0700 -- .../log4j/core/appender/AppenderSet.java| 135 ++ .../log4j/core/appender/ScriptSelector.java | 139 +++ .../appender/ScriptSelectorAppenderTest.java| 95 + .../log4j-appender-selector-javascript.xml | 35 + 4 files changed, 404 insertions(+) -- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79d9e113/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java -- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java new file mode 100644 index 000..4403ab4 --- /dev/null +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AppenderSet.java @@ -0,0 +1,135 @@ +/* + * 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.appender; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.Node; +import org.apache.logging.log4j.core.config.plugins.Plugin; +import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory; +import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; +import org.apache.logging.log4j.core.config.plugins.PluginNode; +import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; +import org.apache.logging.log4j.status.StatusLogger; + +/** + * A deferred plugin for appenders. + */ +@Plugin(name = "AppenderSet", category = "Core", printObject = true, deferChildren = true) +public class AppenderSet { + +public static class Builder implements org.apache.logging.log4j.core.util.Builder { + +@PluginNode +private Node node; + +@PluginConfiguration +@Required +private Configuration configuration; + +@Override +public AppenderSet build() { +if (configuration == null) { +LOGGER.error("Configuration is missing from AppenderNodeSet"); +} +final List children = node.getChildren(); +final Map map = new HashMap<>(node == null ? 0 : children.size()); +if (children == null) { +LOGGER.error("No child node in the AppenderSet {}", this); +return null; +} +for (final Node childNode : children) { +final String key = childNode.getAttributes().get("name"); +if (key == null) { +LOGGER.error("The attribute 'name' is missing from from the node {} in the AppenderNodeSet {}", +childNode, children); +} else { +map.put(key, childNode); +} +} +return new AppenderSet(configuration, map); +} + +public Node getNode() { +return node; +} + +public Configuration getConfiguration() { +return configuration; +}