[logback-dev] Logback appender for MongoDB
Tomasz Nurkiewicz
nurkiewicz at gmail.com
Thu Jun 14 19:59:34 CEST 2012
Sure, by definition *unit* tests should not depend on any external
resource like databases. All my tests are /integration/ ones, testing
the whole stack from logging to reading back from MongoDB.
We should probably split them and write mocked tests as well (I like
Mockito, but it is just a matter of preference).
On 14.06.2012 19:54, Christian Trutz wrote:
> Hi Tomasz,
>
>>The only issue I see is integration testing: at least my tests require
> running MongoDB
>>instance somewhere. This is a major drawback for both continuous
> integration of Lobgack
>>extensions and for all developers, not necessarily interested in this
> particular extension.
>
> I think we should not require for unit test a mongodb instance. I have
> very good experience with jmockit http://code.google.com/p/jmockit/ what
> do you think about?
>
> Christian
>
> 2012/6/14 Tomasz Nurkiewicz <nurkiewicz at gmail.com
> <mailto:nurkiewicz at gmail.com>>
>
> Here is precisely what I created so far:
>
> * base abstract appender handling MongoDB connectivity [1]
> * standard appender [2] + tests [3]
> * access appender (tested with Tomcat) [4] + tests [5]
> * configuration examples [6]
>
> By quick googling I found several other community implementations:
> [7], [8], [9]. Looks like my implementation is the only one capable
> of storing access logs as well, e.g.:
>
> {
> "_id" : ObjectId("__4d98cc4f7abb95e59279e183"),
> "timeStamp" : ISODate("2011-04-03T19:36:47.__339Z"),
> "server" : "localhost",
> "remote" : {
> "host" : "0:0:0:0:0:0:0:1",
> "user" : "tomcat",
> "addr" : "0:0:0:0:0:0:0:1"
> },
> "request" : {
> "uri" : "/manager/images/tomcat.gif",
> "protocol" : "HTTP/1.1",
> "method" : "GET",
> "sessionId" : "__1C6357816D9EEFD31F6D9D154D8730__8A",
> "userAgent" : "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.16)
> Gecko/20110323 Ubuntu/10.10 (maverick) Firefox/3.6.16",
> "referer" : "http://localhost:8080/__manager/html
> <http://localhost:8080/manager/html>"
> },
> "response" : {
> "contentLength" : NumberLong(1934),
> "statusCode" : 200
> }
> }
>
> We should now revise all available implementations and build final
> one based on best ideas from all of them. The only issue I see is
> integration testing: at least my tests require running MongoDB
> instance somewhere. This is a major drawback for both continuous
> integration of Lobgack extensions and for all developers, not
> necessarily interested in this particular extension.
>
> Christian Trutz - thanks for creating the project structure.
>
> [1]:
> https://github.com/nurkiewicz/__logback/blob/mongodb-appender/__logback-core/src/main/java/ch/__qos/logback/core/db/mongo/__MongoDBAppenderBase.java
> <https://github.com/nurkiewicz/logback/blob/mongodb-appender/logback-core/src/main/java/ch/qos/logback/core/db/mongo/MongoDBAppenderBase.java>
>
> [2]:
> https://github.com/nurkiewicz/__logback/blob/mongodb-appender/__logback-classic/src/main/java/__ch/qos/logback/classic/db/__mongo/MongoDBAppender.java
> <https://github.com/nurkiewicz/logback/blob/mongodb-appender/logback-classic/src/main/java/ch/qos/logback/classic/db/mongo/MongoDBAppender.java>
>
> [3]:
> https://github.com/nurkiewicz/__logback/blob/mongodb-appender/__logback-classic/src/test/java/__ch/qos/logback/classic/db/__mongo/MongoDBAppenderTest.java
> <https://github.com/nurkiewicz/logback/blob/mongodb-appender/logback-classic/src/test/java/ch/qos/logback/classic/db/mongo/MongoDBAppenderTest.java>
>
> [4]:
> https://github.com/nurkiewicz/__logback/blob/mongodb-appender/__logback-access/src/main/java/__ch/qos/logback/access/db/__mongo/MongoDBAppender.java
> <https://github.com/nurkiewicz/logback/blob/mongodb-appender/logback-access/src/main/java/ch/qos/logback/access/db/mongo/MongoDBAppender.java>
>
> [5]:
> https://github.com/nurkiewicz/__logback/blob/mongodb-appender/__logback-access/src/test/java/__ch/qos/logback/access/db/__mongo/MongoDBAppenderTest.java
> <https://github.com/nurkiewicz/logback/blob/mongodb-appender/logback-access/src/test/java/ch/qos/logback/access/db/mongo/MongoDBAppenderTest.java>
>
> [6]:
> https://github.com/nurkiewicz/__logback/tree/mongodb-appender/__logback-classic/src/test/__input/joran/mongodb
> <https://github.com/nurkiewicz/logback/tree/mongodb-appender/logback-classic/src/test/input/joran/mongodb>
>
> [7]: https://github.com/kofemann/__mongo-appender-for-logback
> <https://github.com/kofemann/mongo-appender-for-logback>
>
> [8]: https://github.com/smilebase/__logback-mongodb
> <https://github.com/smilebase/logback-mongodb>
>
> [9]: https://github.com/uded/__logback-mongodb-appender
> <https://github.com/uded/logback-mongodb-appender>
>
>
>
> On 14.06.2012 14:24, ceki wrote:
>
> Hi Christian,
>
> Tomasz created a jira issue for implementing MongoDBAppender
> [2]. His
> implementation can be found at [3, 4, 5].
>
> I think his impl is worth a look. He seprated connection
> functionality
> into MongoDBAppenderBase (part of logback-core) and ILoggingEvent
> specific code into MongoDBAppender (in logback-classic).
> Moreover, his
> code comes with 100% test coverage!
>
> I guess the code could be easily extended to cater for
> AccessEvent (in
> logback-access).
>
> Anyway, let me know what I can do to move this work forward.
>
> [1] https://github.com/qos-ch/__logback-extensions
> <https://github.com/qos-ch/logback-extensions>
> [2] http://jira.qos.ch/browse/__LOGBACK-522
> <http://jira.qos.ch/browse/LOGBACK-522>
> [3]
> https://github.com/nurkiewicz/__logback/tree/mongodb-appender
> <https://github.com/nurkiewicz/logback/tree/mongodb-appender>
> [4]
> https://github.com/nurkiewicz/__logback/commit/858aceb9af74d0
> <https://github.com/nurkiewicz/logback/commit/858aceb9af74d0>
> [5] https://github.com/nurkiewicz/__logback/commit/f5bff8e43
> <https://github.com/nurkiewicz/logback/commit/f5bff8e43>
>
>
>
>
> pozdrowienia
>
> --
> Tomasz Nurkiewicz
> http://nurkiewicz.blogspot.com
> _________________________________________________
> logback-dev mailing list
> logback-dev at qos.ch <mailto:logback-dev at qos.ch>
> http://mailman.qos.ch/mailman/__listinfo/logback-dev
> <http://mailman.qos.ch/mailman/listinfo/logback-dev>
>
>
>
>
> --
> Christian Trutz
> Von-Flotow-Straße 24
> D-45772 Marl
>
> Festnetz (privat): +49 (0)2365 3840327
> E-Mail: christian.trutz at gmail.com <mailto:christian.trutz at gmail.com>
>
>
>
>
> _______________________________________________
> logback-dev mailing list
> logback-dev at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-dev
pozdrowienia
--
Tomasz Nurkiewicz
http://nurkiewicz.blogspot.com
More information about the logback-dev
mailing list