Repository: logging-log4j2 Updated Branches: refs/heads/master 6b2cbc2db -> 3d409c10a
LOG4J2-1120 Implement AppenderControl.equals/hashCode so LoggerConfig can manage AppenderControls in a Set in while preserving Map semantics. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5f4c598e Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5f4c598e Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5f4c598e Branch: refs/heads/master Commit: 5f4c598ec8314b4b730e8fffc6dafb7d718b9ce5 Parents: 6b2cbc2 Author: rpopma <[email protected]> Authored: Sun Sep 13 21:21:22 2015 +0900 Committer: rpopma <[email protected]> Committed: Sun Sep 13 21:21:22 2015 +0900 ---------------------------------------------------------------------- .../log4j/core/config/AppenderControl.java | 38 +++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5f4c598e/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java index 7445afb..01b97ce 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java @@ -16,6 +16,8 @@ */ package org.apache.logging.log4j.core.config; +import java.util.Objects; + import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Filter; @@ -28,16 +30,13 @@ import org.apache.logging.log4j.core.filter.Filterable; * Wraps an {@link Appender} with details an appender implementation shouldn't need to know about. */ public class AppenderControl extends AbstractFilterable { - private static final long serialVersionUID = 1L; private final ThreadLocal<AppenderControl> recursive = new ThreadLocal<>(); - private final Appender appender; - private final Level level; - private final int intLevel; + private final String appenderName; /** * Constructor. @@ -48,10 +47,19 @@ public class AppenderControl extends AbstractFilterable { public AppenderControl(final Appender appender, final Level level, final Filter filter) { super(filter); this.appender = appender; + this.appenderName = appender.getName(); this.level = level; this.intLevel = level == null ? Level.ALL.intLevel() : level.intLevel(); start(); } + + /** + * Returns the name the appender had when this AppenderControl was constructed. + * @return the appender name + */ + public String getAppenderName() { + return appenderName; + } /** * Returns the Appender. @@ -151,4 +159,26 @@ public class AppenderControl extends AbstractFilterable { throw ex; } } + + // AppenderControl is a helper object whose purpose is to make it + // easier for LoggerConfig to manage and invoke Appenders. + // LoggerConfig manages Appenders by their name. To facilitate this, + // two AppenderControl objects are considered equal if and only + // if they have the same appender name. + @Override + public boolean equals(final Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof AppenderControl)) { + return false; + } + final AppenderControl other = (AppenderControl) obj; + return Objects.equals(appenderName, other.appenderName); + } + + @Override + public int hashCode() { + return appenderName.hashCode(); + } }
