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://bit.ly/ECvg0 >>> Spring Batch in Action: http://bit.ly/bqpbCK >>> Blog: http://garygregory.wordpress.com >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >>