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