What is this " LoggingTest.cleanupClass:49 NullPointer" at the bottom of your list of errors? What does that do?
On Sat, Aug 17, 2013 at 8:27 AM, Gary Gregory <garydgreg...@gmail.com>wrote: > It's likely that MongoDB needs another jar on the CP. > > G > > > On Fri, Aug 16, 2013 at 6:48 PM, Nick Williams < > nicho...@nicholaswilliams.net> wrote: > >> Guys, I'm having a hard time with this simple fix that should have taken >> five minutes. I'm getting test failures due to NoClassDefFoundErrors that >> shouldn't happen. >> >> Here are the tests in error: >> CategoryTest.setupClass:52 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testTraceWithException:415 ? NoClassDefFound >> com/mongodb/MongoExcep... >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testLog:459 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testRB1:295 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testRB2:314 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testRB3:334 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testTrace:388 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testAdditivity1:119 ? NoClassDefFound >> com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testAdditivity2:144 ? NoClassDefFound >> com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testAdditivity3:183 ? NoClassDefFound >> com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testIsTraceEnabled:443 ? NoClassDefFound >> com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.testExists:355 ? NoClassDefFound com/mongodb/MongoException >> LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException >> LoggingTest.setupClass:44 ? NoClassDefFound com/mongodb/MongoException >> LoggingTest.cleanupClass:49 NullPointer >> >> Here's the code I added: >> >> try { >> if (!database.authenticate(username, >> password.toCharArray())) { >> LOGGER.error("Failed to authenticate against >> MongoDB server. Unknown error."); >> } >> } catch (MongoException e) { >> LOGGER.error("Failed to authenticate against MongoDB: >> " + e.getMessage(), e); >> } catch (IllegalStateException e) { >> LOGGER.error("Factory-supplied MongoDB database >> connection already authenticated with different" + >> "credentials but lost connection."); >> } >> >> Problem is, "database" is an instance of com.mongodb.DB, which is in the >> same JAR as com.mongodb.MongoException. If I remove this code, the tests >> pass. How is this possible? The DB instance is there with or without this >> new code, which means the JAR is on the classpath, which means >> MongoException should be on the classpath. >> >> Very confused... >> >> Nick >> >> On Aug 16, 2013, at 5:13 PM, Gary Gregory wrote: >> >> Thank you for the update Nick! >> :) >> Gary >> >> >> On Fri, Aug 16, 2013 at 5:39 PM, Nick Williams < >> nicho...@nicholaswilliams.net> wrote: >> >>> Answers inline. >>> >>> On Aug 14, 2013, at 2:10 AM, YuCheng Ting wrote: >>> >>> Hi all, >>> >>> I use *beta8 *log4j2 and wrote log4j2.xml like example in document ( >>> http://logging.apache.org/log4j/2.x/manual/appenders.html#NoSQLAppender): >>> >>> >>> *<appenders> >>> <NoSql name="databaseAppender"> >>> <MongoDb databaseName="applicationDb" >>> collectionName="applicationLog" >>> server="mongo.example.org" >>> username="loggingUser" password="abc123" /> >>> </NoSql> >>> </appenders>* >>> >>> >>> Yep. That's correct. >>> >>> but I get the two exception: >>> >>> 1, "can't serialize class org.apache.logging.log4j.Level" exception in >>> (BasicBSONEncoder.java:270), I read the code and add follow code in my >>> project before logging, it gone. >>> >>> *BSON.addEncodingHook(org.apache.logging.log4j.Level.class, new >>> Transformer() { >>> @Override >>> public Object transform(Object o) { >>> return o.toString(); >>> } >>> });* >>> >>> >>> This bug was reported and fixed a few weeks ago. The fix will be in the >>> next version, or you can compile locally. >>> https://issues.apache.org/jira/browse/LOG4J2-330 >>> >>> 2, “not authorized for insert test.log”, because my MongoDB need auth to >>> write, but the the "username" and "password" attributes in log4j2.xml is >>> nearly useless, after I read source code, found it *NOT auth* in >>> >>> * >>> org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider.createNoSQLProvider >>> * >>> source code line 181 after check username and password and * >>> com.mongodb.DB.authenticate* never be called. >>> >>> >>> This is a bug. I'm reporting it and fixing it now. The fix will be in >>> the next version, or you can compile locally (after I get the change >>> committed, of course). >>> >>> so I change log4j2.xml : >>> * >>> <NoSql name="mongodb"> >>> <MongoDb collectionName="log" databaseName="test" >>> factoryClassName="com.yuchs.test.log4j.MainTest" >>> factoryMethodName="getMongoClient" /> >>> </NoSql>* >>> >>> and create MongoClient and call *com.mongodb.DB.authenticate* method in >>> *com.yuchs.test.log4j.MainTest.getMongoClient*. >>> >>> >>> *This is my question:* >>> >>> 1, Why not add BSON.addEncodingHook code into log4j2 project to avoid >>> basic exception ? or another rule of method I don't know ? >>> >>> 2, Why not auth DB in log4j2 project if password and username is set in >>> log4j2.xml ? or another rule of method I don't know ? >>> >>> Thanks everyone! >>> >>> >>> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> Java Persistence with Hibernate, Second >> Edition<http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> >> >> > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory >