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/04/15 17:51:46 UTC
logging-log4j2 git commit: LOG4J2-1368 StatusLogger dropped
exceptions when logging parameterized messages.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 71fbda804 -> afb720740
LOG4J2-1368 StatusLogger dropped exceptions when logging parameterized messages.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/afb72074
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/afb72074
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/afb72074
Branch: refs/heads/master
Commit: afb72074094471f1f7ce9fd0db443ed5f4d2416d
Parents: 71fbda8
Author: rpopma <rp...@apache.org>
Authored: Sat Apr 16 00:51:44 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sat Apr 16 00:51:44 2016 +0900
----------------------------------------------------------------------
.../ParameterizedNoReferenceMessageFactory.java | 39 +++++++++++++++++++-
src/changes/changes.xml | 3 ++
2 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/afb72074/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
index 80349ed..ca18d11 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedNoReferenceMessageFactory.java
@@ -33,6 +33,41 @@ public final class ParameterizedNoReferenceMessageFactory extends AbstractMessag
private static final long serialVersionUID = 5027639245636870500L;
/**
+ * Message implementation that only keeps a reference to the error text and the error (if any), not to the
+ * message parameters, in order to avoid memory leaks. This addresses LOG4J2-1368.
+ * @since 2.6
+ */
+ static class StatusMessage implements Message {
+ private final String formattedMessage;
+ private final Throwable throwable;
+
+ public StatusMessage(final String formattedMessage, final Throwable throwable) {
+ this.formattedMessage = formattedMessage;
+ this.throwable = throwable;
+ }
+
+ @Override
+ public String getFormattedMessage() {
+ return formattedMessage;
+ }
+
+ @Override
+ public String getFormat() {
+ return formattedMessage;
+ }
+
+ @Override
+ public Object[] getParameters() {
+ return null;
+ }
+
+ @Override
+ public Throwable getThrowable() {
+ return throwable;
+ }
+ }
+
+ /**
* Constructs a message factory with default flow strings.
*/
public ParameterizedNoReferenceMessageFactory() {
@@ -58,7 +93,7 @@ public final class ParameterizedNoReferenceMessageFactory extends AbstractMessag
if (params == null) {
return new SimpleMessage(message);
}
- final String formatted = new ParameterizedMessage(message, params).getFormattedMessage();
- return new SimpleMessage(formatted);
+ final ParameterizedMessage msg = new ParameterizedMessage(message, params);
+ return new StatusMessage(msg.getFormattedMessage(), msg.getThrowable());
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/afb72074/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f296b9f..6413280 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
</properties>
<body>
<release version="2.6" date="2016-MM-DD" description="GA Release 2.6">
+ <action issue="LOG4J2-1368" dev="rpopma" type="fix">
+ (Log4j-internal) StatusLogger dropped exceptions when logging parameterized messages.
+ </action>
<action issue="LOG4J2-1326" dev="rpopma" type="add">
(GC) Added methods to the Logger interface for logging CharSequence messages.
</action>