需要的配置文件和组件包,下面三个 jar 文件和一个 properties 文件都是要放在项目的 ClassPath 上。
1. slf4j-api-1.5.11.jar
2. slf4j-log4j12-1.5.11.jar
3. log4j-1.2.15.jar
4. log4j.properties(也可以是 log4j.xml,本例中用 log4j.propertes)
log4j.properties
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- log4j.appender.db=org.apache.log4j.FileAppender
- log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log
- log4j.appender.db.Append=true
- log4j.appender.db.layout=org.apache.log4j.PatternLayout
- log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
使用 SLF4J 的代码:
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class TestSlf4J {
- private static final Logger logger = LoggerFactory.getLogger(TestSlf4j.class);
- public static void main(String[] args) {
- logger.info("Hello {}","SLF4J");
- }
- }
执行它,控制台输出:
- 2010-04-07 17:14:51,390 [com.unmi.TestSlf4j]-[INFO] Hello SLF4J
把这种 SLF4J+Log4J 的使用模式与曾为霸主地位的 JCL+Log4J 的用法进行一下对比(请忽略掉包文件中的版本号):
SLF4J+Log4j 组合 | 对比 | JCL+Log4J 组合 |
slf4j-api-1.5.11.jar | 相当,定义高层 API | commons-logging-1.1.jar |
slf4j-log4j12-1.5.11.jar | 相当,左边是用绑定包,右边 是用配置文件来指定日志实现 |
commons-logging.properties,内容为: org.apache.commons.logging.LogFactory= org.apache.commons.logging.impl.LogFactoryImpl 或者 org.apache.commons.logging.Log= org.apache.commons.logging.impl.Log4JLogger |
log4j-1.2.15.jar | 一样 | log4j-1.2.15.jar |
log4j.properties | 一样,原来怎么配置现在也是 | log4j.properties |
程序代码中: import org.slf4j.Logger; import org.slf4j.LoggerFactory; Logger logger = LoggerFactory.getLogger(TestSlf4j.class); |
左边侵入的是 SLF4J API,右边是被 JCL 的 API 污染了
SLF4J 支持参数化,而 JCL 不能 |
程序代码中: import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Log log = LogFactory.getLog(TestJCL.class); log.info("Hello JCL"); |
从上面的对比来看,SLF4j+Log4j 与 JCL+Log4J 的使用方式差不多,主要差异就在 SLF4J 用 jar 来告知用哪种日志实现,而 JCL 是通过配置文件来获得该选择哪个日志实现。
为什么会兴起 SLF4J,看看我们原来哪一个框架中,大的如 SSH 三雄(Spring、Struts、Hibernate),还有 WAS 应用服务器,小的就不计其数以前用的通用日志框架都清一色的 Jakarta Commons Logging(JCL),日志实现会选用 Log4j,为何现在 Hibernate、Tapesty、DbUnit、Jetty V6 等纷纷变节,都采用了 SLF4J 了呢?SLF4J 与 JCL 相比,定然是有其可表之处。而其中 SLF4J 受类加载器的影响较小,不易产生内存溢出的问题,性能得到了改善,更主要是顺应了潮流的发展--可方便部署到 OSGI 环境中。
关于当前有哪些项目改用了 SLF4J,请参看页面 http://www.slf4j.org/。
相关推荐
SLF4J的主要目的是为各种日志框架,如log4j、logback等,提供一个统一的接口,使得应用程序可以独立于具体的日志实现进行开发,提高了代码的可移植性和灵活性。 标题中的"slf4j-log4j12-1.7.12.jar"是SLF4J的一个...
Log4j定义了几种日志级别,按照严重性从低到高分别为:trace、debug、info、warn、error、fatal。日志级别之间的关系是包含的,即设置日志级别为info时,info、warn、error、fatal级别的日志都会被记录。在开发过程...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。这个接口使得应用程序的代码与...
例如,如果项目已经使用了Log4j,那么可以将`slf4j-log4j12-1.6.6.jar`加入到类路径,并移除其他日志相关的jar,确保只有一种日志实现。如果希望使用Java内置日志,就选择`slf4j-jdk14-1.5.6.jar`。在部署时,只需...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个接口,允许用户在运行时动态地绑定到各种具体的日志框架,如Log4j、Java内置的日志或者Logback等。这个设计使得开发者可以在不修改...
SLF4J是一个用于日志记录的抽象层,它提供了一种灵活的日志记录机制,允许开发者在部署时插入所需的日志实现。Log4j2是Apache的一个项目,它是Log4j的升级版,提供了更高效、更强大的日志记录功能。 问题的核心在于...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的API,如Log4j、Java Util Logging、Logback等。这个API允许开发者在部署应用时选择合适的日志实现,而无需修改...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得最终用户能够在部署时插入所需的日志框架。SLF4J的1.5和1.6版本包含了两个重要的...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面,它提供了一个简单的接口,允许用户在运行时插入任何日志实现。SLF4J的主要目标是为各种日志框架(如log4j、logback等)提供一个统一的API,使得...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的API,如Log4j、Java Util Logging、Logback等。这样,开发者可以在不修改代码的情况下更换底层的日志实现。SLF...
- **绑定库**:如`slf4j-log4j12-1.6.1.jar`,这是一个示例绑定,将SLF4J接口绑定到Log4j实现。 - **文档**:包括Javadoc和用户指南,帮助开发者理解和使用SLF4J。 - **源码**:可能包含源代码文件,方便开发者查看...
在提供的压缩包文件`slf4j和log4j`中,可能包含了SLF4J的API和一种日志实现,如Logback或Log4j。解压后,将这些库添加到项目的类路径中,可以解决上述错误。具体步骤可能因文件内容而异,通常包括将JAR文件复制到...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,使得开发者能够在不修改代码的情况下切换不同的日志实现,如Log4j、Logback等。这个"slf4j-1.5.8.rar...
SLF4J(Simple Logging Facade for Java)是Java中一个用于日志记录的抽象层,它提供了一种标准的日志记录接口,使得开发者可以选择不同的日志实现框架,如Log4j、Logback等。MongoDB则是一个流行的NoSQL数据库系统...
其中`logback-classic`模块是对Log4j的一种改进,同时它也完全实现了SLF4J的API接口,使得Logback可以无缝地与SLF4J配合使用。 #### 四、SLF4J配置概述 SLF4J的核心理念是提供一个简单的日志接口,具体的日志实现...
SLF4J(Simple Logging Facade for Java)是Java领域广泛应用的日志抽象层,它为各种日志框架,如Log4j、Java Util Logging、Logback等,提供...在实际应用中,应确保所有依赖项和SLF4J的版本兼容,以避免潜在的问题。
SLF4J(Simple Logging Facade for Java)是Java中一个广泛应用的日志抽象层,它为各种日志框架,如Logback、Log4j等,提供了一个统一的接口。SLF4J的主要目的是允许最终用户在部署时插入所需的日志框架,而无需重新...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供了一个简单的接口。SLF4J的主要目的是使应用程序能够在其开发阶段选择任何日志框架,而无需在部署时...
在实际应用中,通常会将SLF4J API与一个具体的日志实现(如Logback或Log4j)一起打包到应用程序中。配置文件(如Logback的`logback.xml`或Log4j的`log4j.properties`)会决定日志的行为,如输出级别、格式、目的地等...