You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2021/06/25 08:09:20 UTC

[logging-log4j2] branch master updated: LOG4J2-3107 SmtpManager.createManagerName() ignores port (#528)

This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/master by this push:
     new 3c649ce  LOG4J2-3107 SmtpManager.createManagerName() ignores port (#528)
3c649ce is described below

commit 3c649ce4a51111914d9f5e274445fe12cf1a28da
Author: Markus Spann <ma...@hotmail.com>
AuthorDate: Fri Jun 25 10:03:13 2021 +0200

    LOG4J2-3107 SmtpManager.createManagerName() ignores port (#528)
---
 .../logging/log4j/core/net/SmtpManagerTest.java    | 19 +++++++++++++++++
 .../logging/log4j/smtp/appender/SmtpManager.java   | 24 +++++++++++-----------
 src/changes/changes.xml                            |  3 +++
 3 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SmtpManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SmtpManagerTest.java
new file mode 100644
index 0000000..e19e76f
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SmtpManagerTest.java
@@ -0,0 +1,19 @@
+package org.apache.logging.log4j.core.net;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * Unit tests for {@link SmtpManager}.
+ */
+class SmtpManagerTest {
+
+    @Test
+    void testCreateManagerName() {
+        String managerName = SmtpManager.createManagerName("to", "cc", null, "from", null, "LOG4J2-3107",
+                "proto", "smtp.log4j.com", 4711, "username", false, "filter");
+        assertEquals("SMTP:to:cc::from::LOG4J2-3107:proto:smtp.log4j.com:4711:username::filter", managerName);
+    }
+
+}
diff --git a/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java b/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
index f8c0154..9d93932 100644
--- a/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
+++ b/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
@@ -108,15 +108,21 @@ public class SmtpManager extends AbstractManager {
             protocol = "smtp";
         }
 
-        final String managerName = createManagerName(to, cc, bcc, from, replyTo, subject, protocol, host, username, password, isDebug, filterName);
+        final String name = createManagerName(to, cc, bcc, from, replyTo, subject, protocol, host, port, username, isDebug, filterName);
         final Serializer subjectSerializer = PatternLayout.newSerializerBuilder().setConfiguration(config).setPattern(subject).build();
 
-        return getManager(managerName, FACTORY, new FactoryData(to, cc, bcc, from, replyTo, subjectSerializer,
+        return getManager(name, FACTORY, new FactoryData(to, cc, bcc, from, replyTo, subjectSerializer,
             protocol, host, port, username, password, isDebug, numElements, sslConfiguration));
 
     }
 
-    private static String createManagerName(
+    /**
+     * Creates a unique-per-configuration name for an smtp manager using the specified the parameters.<br>
+     * Using such a name allows us to maintain singletons per unique configurations.
+     *
+     * @return smtp manager name
+     */
+    static String createManagerName(
             final String to,
             final String cc,
             final String bcc,
@@ -125,8 +131,8 @@ public class SmtpManager extends AbstractManager {
             final String subject,
             final String protocol,
             final String host,
+            final int port,
             final String username,
-            final String password,
             final boolean isDebug,
             final String filterName) {
 
@@ -156,20 +162,14 @@ public class SmtpManager extends AbstractManager {
             sb.append(subject);
         }
         sb.append(':');
-        sb.append(protocol).append(':').append(host).append(':').append("port").append(':');
+        sb.append(protocol).append(':').append(host).append(':').append(port).append(':');
         if (username != null) {
             sb.append(username);
         }
-        sb.append(':');
-        if (password != null) {
-            sb.append(password);
-        }
         sb.append(isDebug ? ":debug:" : "::");
         sb.append(filterName);
 
-        final String hash = NameUtil.md5(sb.toString());
-        return "SMTP:" + hash;
-
+        return "SMTP:" + sb.toString();
     }
 
     /**
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d355983..0b7c3e0 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -208,6 +208,9 @@
         Allow a PatternSelector to be specified on GelfLayout.
       </action>
       <!-- FIXES -->
+      <action issue="LOG4J2-3107" dev="vy" type="fix" due-to="Markus Spann">
+        SmtpManager.createManagerName ignores port.
+      </action>
       <action issue="LOG4J2-3080" dev="vy" type="fix">
         Use SimpleMessage in Log4j 1 Category whenever possible.
       </action>