On Thu, Apr 25, 2013 at 10:43 AM, Gary Gregory <garydgreg...@gmail.com>wrote:
> On Thu, Apr 25, 2013 at 11:37 AM, Nicholas Williams < > nicho...@nicholaswilliams.net> wrote: > >> >> On Thu, Apr 25, 2013 at 10:01 AM, Remko Popma <rem...@yahoo.com> wrote: >> >>> I think this is the link Gary is talking about: (from the wiki) >>> Build a NoSQL Appender, maybe with >>> AppScale<http://wiki.apache.org/logging/AppScale> >>> : http://appscale.cs.ucsb.edu/datastores.html Inspiration came from the >>> log4j1 appender for redis: https://github.com/pavlobaron/log4j2redis >>> >>> >> Unless I'm misunderstanding something (very possible), AppScale seems >> like a lot of overhead and overkill. However, it should certainly be >> possible to create a NoSqlAppender that has a "type" property where you >> specify the database type (Mongo, Redis, etc.). >> >> One thing we need to keep in mind is dependencies: appending to Mongo >> will require the org.mongodb:mongo-java-driver artifact (and its >> dependencies), Redis will require the redis.clients:jedis artifact (and its >> dependencies), etc. So, as far as I see it, we have two options: >> >> A) Have one NoSqlAppender that initially supports MongoDB and can easily >> be made to support other NoSQL databases, put it in the log4j-core >> artifact, and mark all dependencies as OPTIONAL or PROVIDED (thoughts? >> opinions?) so as not to cause using projects to download unnecessary >> dependencies. >> >> B) Put NoSQL appenders in separate artifacts so that dependencies don't >> have to be optional/provided, but as a result each NoSQL will have to have >> its own appender and each will result in a separate log4j artifact. >> >> I REALLY don't like option B, but optional/provided dependencies also >> require careful, explicit documentation and, my bet, end up with lots of >> mailing list emails "Why am I getting a NoClassDefError?". >> > > That's not an issue IMO since you only get the error when the NoSQL > appender class would be loaded. If you use plain log4j, you'd never see the > error. > > If we do a NoSQL appender, it seems to me that each will have it's own > idiosyncrasies and configuration tweak, so a single generic class is not > going to be pretty so I would do: > > - an AppScale appender or equivalent JDBC-like vendor neutral API > - If need be our own, with a NoSQL abstract appender and vendor specific > subclasses. > I may not understand what AppScale is exactly. It looks like just a cloud service. Is that correct? > > Gary > > >> Agree with Gary on keeping things simple. Also agree every new feature >>> needs to be in beta for a while to shake out bugs etc. I don't have an >>> opinion on whether to include jdbc appenders in the first 2.0 release or >>> add them later. >>> >>> You know, I was actually thinking to write a tutorial for custom plugin >>> developers, called "(How to) Write Your Own Darn JdbcAppender!" :-) >>> >>> Sent from my iPhone >>> >>> On 2013/04/25, at 23:51, Gary Gregory <garydgreg...@gmail.com> wrote: >>> >>> On Thu, Apr 25, 2013 at 10:39 AM, Nicholas Williams < >>> nicho...@nicholaswilliams.net> wrote: >>> >>>> First, a quick question: do we anticipate the next version to be beta6 >>>> or rc1? Just curious. >>>> >>> >>> As long as we are adding features, I'd like to keep rolling Betas. But >>> it would also be OK to release 2.0 and add appenders later. >>> >>> I tried porting our app to 2.0 a couple of weeks ago but ran into lots >>> of issues, so I'll need to take another stab at it in a couple of weeks >>> again. We rely on a lot of 1.0 guts so I'll have to think about that some >>> more... >>> >>> >>>> I'm currently working on cleaning up compiler warnings throughout the >>>> project and should have that completed soon. >>>> >>> >>> Great! >>> >>> >>>> >>>> I want to go ahead and get the conversation started about database >>>> appenders. I'd like to see two appenders: >>>> >>>> - A JdbcAppender that is capable of logging to any RDBMS for which >>>> there is a JDBC driver. >>>> - A MongoAppender that is capable of logging to a MongoDB database. >>>> >>> >>> We should not need a MongoDB appender if there is a JDBC driver for it: >>> docs.mongodb.org/ecosystem/drivers/java/ >>> >>> >>>> >>>> The JdbcAppender and MongoAppender would, as far as I can tell, need >>>> properties for mapping all of the possible logging event properties to >>>> table columns (or Mongo equivalent). I don't really see any other way to >>>> accomplish that. We could use layout patterns from the PatternLayout to >>>> achieve this: <column name="columnName" pattern="PatternLayout >>>> equivalent-pattern" /> >>>> >>> >>> You can look at Log4J 1 for inspiration. Keep it simple for a start. I >>> think version 1 just let's you specify a SQL INSERT instead of using some >>> XML for mapping. >>> >>> >>>> >>>> I imagine the JdbcAppender having mutually exclusive properties for >>>> JDBC URL/username/password, DataSource JNDI URL, and >>>> class.staticFactoryMethod for obtaining a DataSource. >>>> >>> >>> Keep is simple for the first cut ;) >>> >>> >>>> >>>> The MongoAppender would similarly have mutually exclusive properties >>>> for connection information and class.statucFactoryMethod for obtaining a >>>> Mongo instance. >>>> >>>> I'd like to take a stab at these after I complete fixing compiler >>>> warnings, and wanted to start getting feedback/ideas and also see if anyone >>>> has use cases for other NoSQL appenders. >>>> >>> >>> Search the ML for my note on NoSQL, it looks like there is a JDBC-like >>> API for NoSQL DBs. >>> >>> Gary >>> >>> -- >>> 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 >