[LOG4J2-1180] Logger cache does not account for message factory. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/98538c43 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/98538c43 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/98538c43
Branch: refs/heads/LOG4J-1181 Commit: 98538c43478b985ef464d4d15afe65127484eaeb Parents: 5c76f99 Author: ggregory <ggreg...@apache.org> Authored: Mon Nov 2 07:52:32 2015 -0800 Committer: ggregory <ggreg...@apache.org> Committed: Mon Nov 2 07:52:32 2015 -0800 ---------------------------------------------------------------------- .../log4j/taglib/Log4jTaglibLoggerContext.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98538c43/log4j-taglib/src/main/java/org/apache/logging/log4j/taglib/Log4jTaglibLoggerContext.java ---------------------------------------------------------------------- diff --git a/log4j-taglib/src/main/java/org/apache/logging/log4j/taglib/Log4jTaglibLoggerContext.java b/log4j-taglib/src/main/java/org/apache/logging/log4j/taglib/Log4jTaglibLoggerContext.java index f25ffc1..18c3c39 100644 --- a/log4j-taglib/src/main/java/org/apache/logging/log4j/taglib/Log4jTaglibLoggerContext.java +++ b/log4j-taglib/src/main/java/org/apache/logging/log4j/taglib/Log4jTaglibLoggerContext.java @@ -59,22 +59,24 @@ final class Log4jTaglibLoggerContext implements LoggerContext { } @Override - public Log4jTaglibLogger getLogger(final String name, final MessageFactory factory) { - Log4jTaglibLogger logger = this.loggers.get(name); + public Log4jTaglibLogger getLogger(final String name, final MessageFactory messageFactory) { + String key = LoggerContextKey.create(name, messageFactory); + Log4jTaglibLogger logger = this.loggers.get(key); if (logger != null) { - AbstractLogger.checkMessageFactory(logger, factory); + AbstractLogger.checkMessageFactory(logger, messageFactory); return logger; } synchronized (this.loggers) { - logger = this.loggers.get(name); + logger = this.loggers.get(key); if (logger == null) { final LoggerContext context = LogManager.getContext(false); - final ExtendedLogger original = factory == null ? - context.getLogger(name) : context.getLogger(name, factory); + final ExtendedLogger original = messageFactory == null ? + context.getLogger(name) : context.getLogger(name, messageFactory); // wrap a logger from an underlying implementation logger = new Log4jTaglibLogger(original, name, original.getMessageFactory()); - this.loggers.put(name, logger); + key = LoggerContextKey.create(name, original.getMessageFactory()); + this.loggers.put(key, logger); } }