[jboss-svn-commits] JBoss Common SVN: r3344 - slf4j-jboss-logmanager/trunk/src/main/java/org/slf4j/impl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 8 20:29:58 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-07-08 20:29:58 -0400 (Wed, 08 Jul 2009)
New Revision: 3344

Modified:
   slf4j-jboss-logmanager/trunk/src/main/java/org/slf4j/impl/Slf4jLoggerFactory.java
Log:
Use typesafe attachment API to cache SLF4J loggers

Modified: slf4j-jboss-logmanager/trunk/src/main/java/org/slf4j/impl/Slf4jLoggerFactory.java
===================================================================
--- slf4j-jboss-logmanager/trunk/src/main/java/org/slf4j/impl/Slf4jLoggerFactory.java	2009-07-09 00:29:31 UTC (rev 3343)
+++ slf4j-jboss-logmanager/trunk/src/main/java/org/slf4j/impl/Slf4jLoggerFactory.java	2009-07-09 00:29:58 UTC (rev 3344)
@@ -28,7 +28,16 @@
 
 public final class Slf4jLoggerFactory implements ILoggerFactory {
 
+    private static final org.jboss.logmanager.Logger.AttachmentKey<Logger> key = new org.jboss.logmanager.Logger.AttachmentKey<Logger>();
+
     public Logger getLogger(final String name) {
-        return new Slf4jLogger(LogContext.getLogContext().getLogger(name));
+        final org.jboss.logmanager.Logger lmLogger = LogContext.getLogContext().getLogger(name);
+        final Logger logger = lmLogger.getAttachment(key);
+        if (logger != null) {
+            return logger;
+        }
+        final Slf4jLogger newLogger = new Slf4jLogger(lmLogger);
+        final Logger appearingLogger = lmLogger.attachIfAbsent(key, newLogger);
+        return appearingLogger != null ? appearingLogger : newLogger;
     }
 }




More information about the jboss-svn-commits mailing list