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/03/08 06:14:18 UTC
[1/3] logging-log4j2 git commit: LOG4J2-1293 ObjectMessage now takes
extra effort to avoid creating temporary Strings
Repository: logging-log4j2
Updated Branches:
refs/heads/master 2be4de9b5 -> 8b99fab7d
LOG4J2-1293 ObjectMessage now takes extra effort to avoid creating temporary Strings
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/ac83641b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ac83641b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ac83641b
Branch: refs/heads/master
Commit: ac83641b496f52c2b6d5f53644ff3d0bedc975c0
Parents: 963f965
Author: rpopma <rp...@apache.org>
Authored: Tue Mar 8 15:57:48 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Tue Mar 8 15:57:48 2016 +1100
----------------------------------------------------------------------
.../java/org/apache/logging/log4j/message/ObjectMessage.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac83641b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
index 6f18463..9fa19f4 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
@@ -58,7 +58,11 @@ public class ObjectMessage implements Message, StringBuilderFormattable {
@Override
public void formatTo(final StringBuilder buffer) {
- if (obj instanceof StringBuilderFormattable) {
+ if (obj == null || obj instanceof String) {
+ buffer.append((String) obj);
+ } else if (obj instanceof StringBuilder) {
+ buffer.append((StringBuilder) obj);
+ } else if (obj instanceof StringBuilderFormattable) {
((StringBuilderFormattable) obj).formatTo(buffer);
} else {
buffer.append(obj);
[3/3] logging-log4j2 git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/logging-log4j2
Posted by rp...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/logging-log4j2
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8b99fab7
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8b99fab7
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8b99fab7
Branch: refs/heads/master
Commit: 8b99fab7def047ef59c19e09ee990690c3c13efa
Parents: 64f589a 2be4de9
Author: rpopma <rp...@apache.org>
Authored: Tue Mar 8 16:12:42 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Tue Mar 8 16:12:42 2016 +1100
----------------------------------------------------------------------
.../logging/log4j/util/PropertiesUtil.java | 22 +
.../logging/log4j/util/PropertiesUtilTest.java | 65 +++
.../resources/PropertiesUtilTest.properties | 29 +
.../org/apache/logging/log4j/core/Appender.java | 8 +
.../org/apache/logging/log4j/core/Layout.java | 3 +-
.../log4j/core/appender/mom/JmsAppender.java | 10 +-
.../log4j/core/appender/mom/JmsManager.java | 2 +-
.../appender/mom/jeromq/JeroMqAppender.java | 229 +-------
.../core/appender/mom/jeromq/JeroMqManager.java | 220 ++++++++
.../core/appender/mom/kafka/KafkaAppender.java | 12 +-
.../core/appender/mom/kafka/KafkaManager.java | 4 +
.../rolling/RollingRandomAccessFileManager.java | 2 +-
.../core/config/AbstractConfiguration.java | 1 +
.../log4j/core/config/ConfigurationAware.java | 33 ++
.../log4j/core/config/CronScheduledFuture.java | 12 +-
.../logging/log4j/core/config/LoggerConfig.java | 51 +-
.../builder/api/AppenderComponentBuilder.java | 9 +-
.../api/AppenderRefComponentBuilder.java | 9 +-
.../api/CompositeFilterComponentBuilder.java | 14 +-
.../builder/api/FilterableComponentBuilder.java | 34 ++
.../builder/api/LoggableComponentBuilder.java | 33 ++
.../builder/api/LoggerComponentBuilder.java | 16 +-
.../builder/api/RootLoggerComponentBuilder.java | 16 +-
.../core/config/builder/api/package-info.java | 2 +
.../config/builder/impl/BuiltConfiguration.java | 17 +-
.../impl/DefaultAppenderComponentBuilder.java | 2 +
.../DefaultAppenderRefComponentBuilder.java | 2 +
...DefaultComponentAndConfigurationBuilder.java | 2 +
.../builder/impl/DefaultComponentBuilder.java | 22 +-
.../DefaultCompositeFilterComponentBuilder.java | 2 +-
.../impl/DefaultConfigurationBuilder.java | 16 +-
.../DefaultCustomLevelComponentBuilder.java | 2 +-
.../impl/DefaultFilterComponentBuilder.java | 2 +-
.../impl/DefaultLayoutComponentBuilder.java | 2 +-
.../impl/DefaultLoggerComponentBuilder.java | 4 +-
.../impl/DefaultRootLoggerComponentBuilder.java | 4 +-
.../impl/DefaultScriptComponentBuilder.java | 2 +-
.../impl/DefaultScriptFileComponentBuilder.java | 2 +
.../core/config/builder/impl/package-info.java | 2 +
.../core/config/json/JsonConfiguration.java | 550 +++++++++----------
.../PropertiesConfigurationBuilder.java | 298 ++++++++++
.../PropertiesConfigurationFactory.java | 378 +------------
.../core/config/status/StatusConfiguration.java | 4 +-
.../log4j/core/config/xml/XmlConfiguration.java | 14 +-
.../AbstractConfigurationAwareLookup.java | 35 ++
.../logging/log4j/core/lookup/Interpolator.java | 6 +-
.../logging/log4j/core/lookup/Log4jLookup.java | 60 +-
.../log4j/core/lookup/StrSubstitutor.java | 19 +-
.../logging/log4j/core/net/SmtpManager.java | 8 +-
.../log4j/core/net/SslSocketManager.java | 2 +-
.../logging/log4j/core/util/KeyValuePair.java | 3 -
.../logging/log4j/core/util/StringEncoder.java | 2 +-
.../appender/mom/jeromq/JeroMqAppenderTest.java | 12 +-
.../log4j/core/config/ConfigurationTest.java | 3 +-
.../core/config/CustomConfigurationTest.java | 2 +-
.../log4j/core/lookup/Log4jLookupTest.java | 32 +-
.../core/lookup/Log4jLookupWithSpacesTest.java | 16 +-
.../log4j/core/util/PropertiesUtilTest.java | 42 --
.../src/test/resources/log4j-routing.properties | 9 -
.../log4j-scriptFile-filters.properties | 8 -
.../src/test/resources/log4j-test1.properties | 58 ++
.../log4j2-properties-root-only.properties | 6 -
.../test/resources/log4j2-properties.properties | 9 -
src/changes/changes.xml | 9 +
src/site/xdoc/manual/configuration.xml.vm | 20 +-
65 files changed, 1387 insertions(+), 1137 deletions(-)
----------------------------------------------------------------------
[2/3] logging-log4j2 git commit: LOG4J2-1296 add
ReusableObjectMessage, ReusableSimpleMessage
Posted by rp...@apache.org.
LOG4J2-1296 add ReusableObjectMessage, ReusableSimpleMessage
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/64f589a6
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/64f589a6
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/64f589a6
Branch: refs/heads/master
Commit: 64f589a676bea837ea5edd7b9f1f4ffdf8cc6a32
Parents: ac83641
Author: rpopma <rp...@apache.org>
Authored: Tue Mar 8 16:12:17 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Tue Mar 8 16:12:17 2016 +1100
----------------------------------------------------------------------
.../log4j/message/ReusableObjectMessage.java | 95 ++++++++++++++++++++
.../ReusableParameterizedMessageFactory.java | 55 +++++++++++-
.../log4j/message/ReusableSimpleMessage.java | 55 ++++++++++++
3 files changed, 203 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/64f589a6/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
new file mode 100644
index 0000000..468c466
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
@@ -0,0 +1,95 @@
+/*
+ * 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.message;
+
+import org.apache.logging.log4j.util.StringBuilderFormattable;
+
+/**
+ * Mutable Message wrapper around an Object message.
+ */
+public class ReusableObjectMessage implements ReusableMessage {
+ private static final long serialVersionUID = 6922476812535519960L;
+
+ private transient Object obj;
+ private transient String objectString;
+
+ public void set(Object object) {
+ this.obj = object;
+ }
+
+ /**
+ * Returns the formatted object message.
+ *
+ * @return the formatted object message.
+ */
+ @Override
+ public String getFormattedMessage() {
+ // LOG4J2-763: cache formatted string in case obj changes later
+ if (objectString == null) {
+ objectString = String.valueOf(obj);
+ }
+ return objectString;
+ }
+
+ @Override
+ public void formatTo(final StringBuilder buffer) {
+ if (obj == null || obj instanceof String) {
+ buffer.append((String) obj);
+ } else if (obj instanceof StringBuilder) {
+ buffer.append((StringBuilder) obj);
+ } else if (obj instanceof StringBuilderFormattable) {
+ ((StringBuilderFormattable) obj).formatTo(buffer);
+ } else {
+ buffer.append(obj);
+ }
+ }
+
+ /**
+ * Returns the object formatted using its toString method.
+ *
+ * @return the String representation of the object.
+ */
+ @Override
+ public String getFormat() {
+ return getFormattedMessage();
+ }
+
+ /**
+ * Returns the object as if it were a parameter.
+ *
+ * @return The object.
+ */
+ @Override
+ public Object[] getParameters() {
+ return new Object[] {obj};
+ }
+
+ @Override
+ public String toString() {
+ return getFormattedMessage();
+ }
+
+ /**
+ * Gets the message if it is a throwable.
+ *
+ * @return the message if it is a throwable.
+ */
+ @Override
+ public Throwable getThrowable() {
+ return obj instanceof Throwable ? (Throwable) obj : null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/64f589a6/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
index 0950d5d..bec6e10 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
@@ -37,6 +37,8 @@ public final class ReusableParameterizedMessageFactory extends AbstractMessageFa
private static final long serialVersionUID = -8970940216592525651L;
private static ThreadLocal<ReusableParameterizedMessage> threadLocalMessage = new ThreadLocal<>();
+ private static ThreadLocal<ReusableSimpleMessage> threadLocalSimpleMessage = new ThreadLocal<>();
+ private static ThreadLocal<ReusableObjectMessage> threadLocalObjectMessage = new ThreadLocal<>();
/**
* Constructs a message factory.
@@ -45,7 +47,7 @@ public final class ReusableParameterizedMessageFactory extends AbstractMessageFa
super();
}
- private static ReusableParameterizedMessage get() {
+ private static ReusableParameterizedMessage getParameterized() {
ReusableParameterizedMessage result = threadLocalMessage.get();
if (result == null) {
result = new ReusableParameterizedMessage();
@@ -54,6 +56,24 @@ public final class ReusableParameterizedMessageFactory extends AbstractMessageFa
return result;
}
+ private static ReusableSimpleMessage getSimple() {
+ ReusableSimpleMessage result = threadLocalSimpleMessage.get();
+ if (result == null) {
+ result = new ReusableSimpleMessage();
+ threadLocalSimpleMessage.set(result);
+ }
+ return result;
+ }
+
+ private static ReusableObjectMessage getObject() {
+ ReusableObjectMessage result = threadLocalObjectMessage.get();
+ if (result == null) {
+ result = new ReusableObjectMessage();
+ threadLocalObjectMessage.set(result);
+ }
+ return result;
+ }
+
/**
* Creates {@link ReusableParameterizedMessage} instances.
*
@@ -65,6 +85,37 @@ public final class ReusableParameterizedMessageFactory extends AbstractMessageFa
*/
@Override
public Message newMessage(final String message, final Object... params) {
- return get().set(message, params);
+ return getParameterized().set(message, params);
+ }
+
+ /**
+ * Creates {@link ReusableSimpleMessage} instances.
+ *
+ * @param message The message String.
+ * @return The Message.
+ *
+ * @see MessageFactory#newMessage(String)
+ */
+ @Override
+ public Message newMessage(final String message) {
+ ReusableSimpleMessage result = getSimple();
+ result.set(message);
+ return result;
+ }
+
+
+ /**
+ * Creates {@link ReusableObjectMessage} instances.
+ *
+ * @param message The message Object.
+ * @return The Message.
+ *
+ * @see MessageFactory#newMessage(Object)
+ */
+ @Override
+ public Message newMessage(final Object message) {
+ ReusableObjectMessage result = getObject();
+ result.set(message);
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/64f589a6/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableSimpleMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableSimpleMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableSimpleMessage.java
new file mode 100644
index 0000000..b31e05c
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableSimpleMessage.java
@@ -0,0 +1,55 @@
+/*
+ * 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.message;
+
+/**
+ * Mutable Message wrapper around a String message.
+ */
+public class ReusableSimpleMessage implements ReusableMessage {
+ private static final long serialVersionUID = -9199974506498249809L;
+ private String message;
+
+ public void set(String message) {
+ this.message = message;
+ }
+
+ @Override
+ public String getFormattedMessage() {
+ return message;
+ }
+
+ @Override
+ public String getFormat() {
+ return message;
+ }
+
+ @Override
+ public Object[] getParameters() {
+ return new Object[0];
+ }
+
+ @Override
+ public Throwable getThrowable() {
+ return null;
+ }
+
+ @Override
+ public void formatTo(final StringBuilder buffer) {
+ buffer.append(message);
+ }
+}
+