During recent 2nd level cache implementation research I noticed EHCache has a very funny dependency: slf4j. Hey, WTH, yet another log library implementation? – I asked myself. No commons-logging as everywhere?
I googled around and found "The evils of commons-logging.jar and its ilk" article. It highlight some problems related to commons-logging usage:
- Different commons-logging versions in one project mirrors DLL-hell problem
- Collection logs from all sources into one stream has no bigger value for a developer
- Advanced configuration is logging back-end dependant (appenders for log4j for example), so unified layer is not valuable here
- Configuration is not intuitive and hard
I agree with 1, 3 and 4. 2 is questionable: sometimes logs sorted in one timeline allows for better error analysis.
slf4j is proposed as an alternative. It's more modular and (probably) simpler that commons-logging. All configuration is a matter of placing selected implementation (slf4j-jdk14-1.5.8.jar for instance) jar on classpath. And voila! – logging is done thru JDK 1.4 logging. Quite simple.