SLF4J
是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。
什么时候应该使用SLF4J?
SLF4J只是一个外观,这意味着它不提供完整的日志记录解决方案。使用SLF4J无法执行配置appender或设置日志记录级别等操作。因此,在某个时间点,任何非平凡的应用程序都需要直接调用底层日志记录系统。换句话说,独立应用程序无法完全独立于API底层日志记录系统。然而,SLF4J减少了这种依赖对近乎无痛水平的影响。
假设您的CRM应用程序使用log4j进行日志记录。但是,您的一个重要客户端要求通过JDK 1.4日志记录执行日志记录。如果您的应用程序充斥着成千上万的直接log4j调用,那么迁移到JDK 1.4将是一个相对冗长且容易出错的过程。更糟糕的是,您可能需要维护两个版本的CRM软件。如果您一直在调用SLF4J API而不是log4j,则可以在几分钟内通过将一个jar文件替换为另一个jar文件来完成迁移。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
Tips:
SLF4J和Logback可以取代Commons Logging和Log4j;
始终使用SLF4J的接口写入日志,使用Logback只需要配置,不需要修改代码。