[jboss-svn-commits] JBoss Common SVN: r3365 - jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 9 22:55:59 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-07-09 22:55:59 -0400 (Thu, 09 Jul 2009)
New Revision: 3365

Modified:
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java
Log:
Clear the log4j config override property to let deployments have their own log4j.jar if they want to

Modified: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java	2009-07-09 23:52:29 UTC (rev 3364)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java	2009-07-10 02:55:59 UTC (rev 3365)
@@ -34,6 +34,9 @@
 import java.util.ResourceBundle;
 import java.util.Collections;
 
+/**
+ * A log4j logger which bridges to a LogManager logger.
+ */
 public final class BridgeLogger extends org.apache.log4j.Logger {
 
     private static final String FQCN = BridgeLogger.class.getName();

Modified: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java	2009-07-09 23:52:29 UTC (rev 3364)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java	2009-07-10 02:55:59 UTC (rev 3365)
@@ -35,6 +35,9 @@
 
 import org.jboss.logmanager.LogContext;
 
+/**
+ * A logger repository which returns log4j loggers which bridge to their corresponding LogManager logger.
+ */
 public final class BridgeRepository implements LoggerRepository {
     private final org.jboss.logmanager.Logger.AttachmentKey<BridgeLogger> reposKey = new org.jboss.logmanager.Logger.AttachmentKey<BridgeLogger>();
 

Modified: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java	2009-07-09 23:52:29 UTC (rev 3364)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java	2009-07-10 02:55:59 UTC (rev 3365)
@@ -22,13 +22,24 @@
 
 package org.jboss.logmanager.log4j;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
 import org.apache.log4j.spi.RepositorySelector;
 import org.apache.log4j.spi.LoggerRepository;
 import org.apache.log4j.LogManager;
 
+import org.jboss.logmanager.Logger;
+import org.jboss.logmanager.Level;
+
+/**
+ * A simple repository selector which chooses the {@link BridgeRepository} always.  Contains a {@code start()} method to
+ * facilitate container deployment.
+ */
 public final class BridgeRepositorySelector implements RepositorySelector {
 
     private static final Object guard = new Object();
+    private static final Logger log = Logger.getLogger(BridgeRepositorySelector.class.getName());
 
     private final BridgeRepository bridgeRepository = new BridgeRepository();
 
@@ -36,7 +47,23 @@
         return bridgeRepository;
     }
 
+    /**
+     * Container install method.  Performs two steps: installs this repository selector into the log4j logmanager, and
+     * clears the system property which prevents log4j from initializing (thus allowing other log4j instances to be
+     * started and configured independently).
+     */
     public void start() {
         LogManager.setRepositorySelector(this, guard);
+        AccessController.doPrivileged(new PrivilegedAction<Void>() {
+            public Void run() {
+                try {
+                    System.clearProperty("log4j.defaultInitOverride");
+                } catch (SecurityException ex) {
+                    log.log(Level.WARN, "Unable to clear system property 'log4j.defaultInitOverride': " +
+                            ex.getMessage() + " (nested log4j deployments may not function as expected");
+                }
+                return null;
+            }
+        });
     }
 }




More information about the jboss-svn-commits mailing list