You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ho...@apache.org on 2004/12/01 06:59:03 UTC

cvs commit: logging-log4j/src/java/org/apache/log4j LogManager.java

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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: cvs commit: logging-log4j/src/java/org/apache/log4j LogManager.java

Posted by Jacob Kjome <ho...@visi.com>.
Quoting Ceki Gülcü <ce...@qos.ch>:

>
> Jake,
>
> I am -1 about this change.

I'm sorry to hear that. Log4j should not make it possible to bring down the
entire appserver based on one developer's initialization code, period, end of
story.


Jake


>
> 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, hoju@apache.org 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: log4j-dev-unsubscribe@logging.apache.org
> >For additional commands, e-mail: log4j-dev-help@logging.apache.org
>
> --
> Ceki Gülcü
>
>   The complete log4j manual:  http://qos.ch/eclm
>   Professional log4j support: http://qos.ch/log4jSupport
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-dev-help@logging.apache.org
>




---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: cvs commit: logging-log4j/src/java/org/apache/log4j LogManager.java

Posted by Ceki Gülcü <ce...@qos.ch>.
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, hoju@apache.org 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: log4j-dev-unsubscribe@logging.apache.org
>For additional commands, e-mail: log4j-dev-help@logging.apache.org

-- 
Ceki Gülcü

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



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org