log4j and the java.util.logging package are actual implementations of logging, while Commons Logging merely puts a common API on top of actual logging implementations. If you code against Commons Logging, you can swap out, e.g., the Java logging package for log4j later w/o having to adapt your code. There may be other logging libraries it supports.