as we saw in previous discussions there are several different opinions. we really discussed that topic a lot. (i also don't really like the idea of having a myfaces logging facade which does more or less the same as other solutions... as mentioned before i thought mario was talking about something different (a mechanism i already had a look at it and won't work due to the mentioned problem...))
anyway, i don't like to have the next big discussion about this topic without a final vote... imo we should just vote about using slf4j as soon as possible for all myfaces projects (from now on). as mentioned: only for projects which use an external logging framework (so e.g. trinidad isn't affected right now). regards, gerhard http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2009/6/5 Gerhard Petracek <gerhard.petra...@gmail.com> > >JCL and slf4j ARE ready-to-use logging wrappers. > > +1 > > regards, > gerhard > > http://www.irian.at > > Your JSF powerhouse - > JSF Consulting, Development and > Courses in English and German > > Professional Support for Apache MyFaces > > > > 2009/6/5 Manfred Geiler <manfred.gei...@gmail.com> > > On Fri, Jun 5, 2009 at 19:49, Mario Ivankovits <ma...@ops.co.at> wrote: >> > Hi! >> > >> > Could one please eloberate a little bit more in detail what the pros are >> of >> > slf4j? >> >> Pros: >> No class loader ambiguousness (as you mentioned) >> You get what you define (especially when using maven): >> compile-dependency to slf4j-api >> runtime-dependency to slf4j-adapter of YOUR choice >> --> that's it! >> >> No wild guessing like with JCL: Use Log4j if it is anywhere in the >> (web container) classpath, else use Java logging... What, if I want to >> use Java logging although there is Log4j in the classpath?! >> "Someone dropped a log4j.jar in the tomcat/lib folder. Oh no, not >> again..." >> Yes, I know commons-logging.properties solves this, but that's >> awful... (BTW, I hate properties files in the root package namespace!) >> >> >> > Notice, I switched to it in our company project - but always using the >> > commons-logging api and just used the slf4j-over-cl wrapper. This is >> > something wich is possible for each and ever user of myfaces already, >> just >> > by adjusting the depencendcies correctly. >> >> Guess, you meant the jcl-over-slf4j.jar bridge, right? That's the part >> that reroutes JCL calls to the slf4j API. >> Yes, that is a possible solution, but keep in mind that this is kind >> of a hack. It is actually a reimplementation of the JCL API >> (namespace) that routes all calls to SLF4J. >> It's meant as runtime solution for legacy libs. Using it as compile >> time dependency might be a shortcut, but my feeling says it's not the >> nicest solution. >> >> >> > Lately I even switched to my own logging wrapper, but this is another >> story. >> > In the end, everything still uses the cl API which is proven to work >> fine. >> > (I created the org.apache.commons.logging package structure with my own >> > classes - which for sure is not possible for myfaces!). >> >> yet another logging wrapper.... WHY do so many people feel they must >> write such a thing? JCL and slf4j ARE ready-to-use logging wrappers. >> So??? >> >> >> > I still think, that using the cl api is the best we can do for our >> users. If >> > they then use cl as implementation - and if this is considered "good" - >> is >> > another story, but nothing WE should anticipate. >> >> They CAN use JCL if myfaces uses slf4j. They just define a >> slf4j-jcl-x.x.x.jar runtime-dependency and everything is fine. >> >> >> > As far as I can say the cl api is rock solid, just the class-loader >> stuff is >> > a pain. But (again AFAIK), slf4j does not solve it, it just does not >> deal >> > with it. >> >> slf4j DOES solve the problem by avoiding highly sophisticated classloader >> magic! >> >> >> > Before we start using any other logging api I'd suggest to build our own >> > thin myfaces-logging wrapper where one then can easily plug in log4j, >> cl, >> > jul (java utils ogging) or whatever - we do not even have to provide any >> > other impl than for jul. >> >> yet another logging wrapper... (see above) >> >> How would you implement such a pluggable wrapper? Yet another >> (mandatory) config parameter. System property? Servlet context param? >> Come on! >> What about this: looking for existing well-known logging >> implementations and define some priority rules... Dejavu. See the >> problem? >> >> >> > As a plus, this then will remove a dependency - a dependency to any >> logging >> > framework - which - in terms of dependencies can be considered as a >> "good" >> > thing, no? >> >> You buy this "good" thing by re-implementing SLF4J and/or JCL. >> Serious. I cannot imagine a "wrapper" (actually a "facade", right?) >> implementation that is versatile for the developers and pluggable for >> the users and has less source code than any of the well-known logging >> facade APIs (slf4j and jcl). They both are actually meant to heal the >> java world from proprietary "yet another logging facades/wrappers"! >> >> >> +1 for using SLF4J as logging facade for future MyFaces developments >> (JSF 2.0, ...) >> +0 for replacing JCL by SLF4J for all existing code (if someone is >> volunteering to do the job I have no problem with that...) >> >> >> --Manfred >> > >