Make sure you can see the messages from the status logger, maybe there is an error processing the log4j config file early on.
G On Fri, Aug 16, 2013 at 7:38 PM, Remko Popma <remko.po...@gmail.com> wrote: > 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 >> > > -- 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