1. 首先八卦一下这个日志家族的成员, 下面这张图虽然没有包含全部的内容, 但是基本也涵盖了日志系统的基本内容, 不管怎么说, 先记住下面这张图:
2. 通过上面的图, 可以简单的理清关系
2.1. commons-logging和slf4j都是日志的接口, 供用户使用, 而没有提供实现。
2.2. log4j, logback等等才是日志的真正实现。
2.3. 当我们调用接口时, 接口的工厂会自动寻找恰当的实现, 返回一个实现的实例给我服务。这些过程都是透明化的, 用户不需要进行任何操作。
3. 这种结构模型的好处
3.1. 如果你的项目已经使用了slf4j + log4j, 这时你需要添加一个新的类库, 比方说是Apache Active MQ, 它依赖于另外一个日志类库logback, 那么你添加Apache Active MQ的时候, 同时把logback也添加进去, Apache Active MQ会自动选择使用slf4j + logback。