Why not handle logging the same way as JDBC? Instead of dealing with the pain of various libraries using various different loggers we could do this instead: class.forName("org.apache.log4j.Log4j") Logger.setLogManagerImpl(org.apache.log4j.LogManager.class); Then when we used: Logger log = LogManager.getLogger(...); Logger would be an interface. The LogManager would return the specified implementation. The default would be java.util.logging. Now we don't have to explicitly have imports for various loggers. AND other libraries would then use whatever particular logging implementation we wanted.
commons-logging does exactly the same thing. Even the code that you wrote ( class.forname.... ) need not be written. http://commons.apache.org/logging/