Jake,

I am -1 about this change.

Custom initialization scripts for setting a repository selector should use the following template:

// set the selector to MyRepositorySelector, preserving the
// existing default repository. However, if MyRepositorySelector has its
// own special defaultRepository then it should not use the one
// returned by LogManger.getLoggerRepository(), it should use it own.
void myCustomInitialization() {

 RepositorySelector mySelector = new MyRepositorySelector();

  // assume default selector is in currently in use
  LoggerRepository defaultRepository= LogManger.getLoggerRepository();
  mySelector.setDefaultRepository(defaultRepository);
  try {
    LogManger.setRepositorySelector(mySelector, new Object());
  } catch(IllegalArgumentException iae) {
     // the selector was already set
  }
  ...
}

If you forget to set the default repository, then getRepositorySelector will return null, and you'll get NullPointerExceptions. People willing set the repository selector are likely to be travelling on the cluetrain. So they'll figure it out.

No need to add side affects to LogManager.setRepositorySeletor.


At 06:59 AM 12/1/2004, [EMAIL PROTECTED] wrote:
hoju        2004/11/30 21:59:03

Modified: src/java/org/apache/log4j LogManager.java
Log:
Make sure the default logger repository isn't null in a new selector that has been passed into setRepositorySelector(). This avoids catastrophic failure of all apps in a container (tested with Tomcat).


  Jake

Revision Changes Path
1.26 +4 -0 logging-log4j/src/java/org/apache/log4j/LogManager.java


Index: LogManager.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/LogManager.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- LogManager.java 30 Nov 2004 18:52:17 -0000 1.25
+++ LogManager.java 1 Dec 2004 05:59:03 -0000 1.26
@@ -150,6 +150,10 @@
"RepositorySelector must be non-null.");
}


+ if(selector.getDefaultRepository() == null) {
+ selector.setDefaultRepository(repositorySelector.getDefaultRepository());
+ }
+
LogManager.guard = guard;
LogManager.repositorySelector = selector;
}





--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

-- Ceki G�lc�

The complete log4j manual: http://qos.ch/eclm
Professional log4j support: http://qos.ch/log4jSupport




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to