什么是SLF4J?
SLF4J是日志系统的一个简单门面(facade),它允许最终用户在应用部署阶段插入所需要的日志系统。
为什么要使用SLF4J?
简单来说,库和其他嵌入式组件应该考虑使用SLF4J作为它们的日志系统,因为这样可以避免将某个具体的日志系统强加于最终用户。另一方面,对于独立应用程序,使用SLF4J则不一定合理,独立应用程序可以直接调用最终的日志系统。对于logback来说,这个问题会变得模糊,因为logback就是通过SLF4J来暴露其日志API的。
SLF4J只是一个门面,也就是说,它并不提供一个完整的日志解决方案。诸如配置appender或者设置日志级别这样的操作是不能通过SLF4J来完成的。因此,任何正常的应用程序最终都将调用底层的日志系统。也就是说,完全地独立与底层日志系统的API对独立应用程序是不可能的。
假设你的CRM应用程序使用log4j作为日志系统。但是,某个重要客户要求使用JDK 1.4日志来完成日志操作。如果你的应用程序中穿插着成千上万条log4j调用,那么迁移到JDK 1.4将是耗时并且容易出错的。更糟糕的情况是,你可能需要维护两个版本的CRM。如果程序调用的是SLF4J API而非log4j,则这样的迁移只需要简单地替换一下jar文件,而这只需要花费几分钟的时间。
SLF4J将日志系统的选择权交给了最终用户,也就是说,最终用户最后必须选择一种日志系统(SLF4J只是一个门面)。