OK, so back to: "I think a better way to do this is to add one more piece of information to the meta-data - a rank/weight as is being done with the configuration factory. Then we will pick the one with the highest rank."
So I really want my impl, I scan the system and edit some config file and use a higher rank? Seems for advanced users but workable. In the case I have today, the test impl would have a lower rank than the stock impl? Then it would work within an IDE. Check? Gary On Fri, Sep 28, 2012 at 5:55 PM, Ralph Goers <ralph.go...@dslextreme.com>wrote: > While it is consistent I wouldn't call it deterministic. For example, > JBoss 5 has an SLF4J implementation in common/lib. Your application may > have one in WEB-INF/lib. One of them will always win but how is it > deterministic which one it will be? What if it isn't the one you want? > What can be done to override it? > > Ralph > > > On Sep 28, 2012, at 1:01 PM, Gary Gregory wrote: > > Agree but doesn't the current code use the classpath order? If not, could > it? That would be deterministic, just like I can place a jar at the front > of the CP to override one or more classes. > > Gary > > On Fri, Sep 28, 2012 at 3:51 PM, Ralph Goers > <ralph.go...@dslextreme.com>wrote: > >> The problem I have is that it isn't deterministic and I very much dislike >> that. SLF4J is that way today and it is annoying that you can't guarantee >> the winner. >> >> Ralph >> >> >> >> On Sep 28, 2012, at 11:21 AM, Gary Gregory wrote: >> >> What about just picking the first one like in the example below (note the >> new error message) >> >> Gary >> >> On Sep 28, 2012, at 14:06, Ralph Goers <ralph.go...@dslextreme.com> >> wrote: >> >> That is interesting. So Eclipse is seeing both the API's test factory >> and the real implementation. I guess that makes sense. I would probably >> have the same problem in IntelliJ except that I never run tests for >> anything in my IDE but always run Maven from the command line - even to >> debug. >> >> At one point I considered allowing multiple implementations, but passing >> events to two logging implementations seems like a performance nightmare. >> Also, the Log4j 2 API isn't really intended as a competitor or replacement >> for SLF4J. >> >> I think a better way to do this is to add one more piece of information >> to the meta-data - a rank/weight as is being done with the configuration >> factory. Then we will pick the one with the highest rank. >> >> Ralph >> >> On Sep 28, 2012, at 10:51 AM, Gary Gregory wrote: >> >> Hi All, >> >> I am using Eclipse as my IDE and when I run >> org.apache.logging.log4j.core.BasicLoggingTest I get an NPE because >> org.apache.logging.log4j.LogManager.factory is null. It is null because >> when the static initializer runs it picks up 2 factories instead of one: >> >> [org.apache.logging.log4j.core.impl.Log4jContextFactory@39c8c1, >> org.apache.logging.log4j.SimpleLoggerContextFactory@1ab2b55]. >> >> Can we be more lenient? >> >> Instead of: >> >> if (factories.size() != 1) { >> logger.fatal("Unable to locate a logging implementation"); >> } else { >> factory = factories.get(0); >> } >> >> How about: >> >> if (factories.size() != 1) { >> logger.error("Expected a single logging implementation, >> not {}, picking the first: {}", factories.size(), factories.get(0)); >> } >> factory = factories.get(0); >> >> ? >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> JUnit in Action, 2nd Ed: <http://goog_1249600977/>http://bit.ly/ECvg0 >> Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> >> >> >> > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > JUnit in Action, 2nd Ed: <http://goog_1249600977/>http://bit.ly/ECvg0 > Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0 Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory