[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