[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);
             }
         }
 

Reply via email to