`
zybing
  • 浏览: 456028 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SLF4j 和 common-logging

阅读更多

看现在有很多开源的软件,log记录都是用SLF4j,以前自己是用common-logging觉得十分方便,可以动态的切换实际的log系统,这样common-logging和SLF4J有什么区别。

 

网上找了一篇文档,觉得说明了一些问题:

 

Apache Common-Logging是广泛使用的Java日志门面库。我以前一直都使用它和log4j编写日志。 
Apache Common-Logging通过动态查找的机制,在程序运行时自动找出真正使用的日志库。 
Apache Common-Logging一直都运作得很好。直到最近,我写OSGI插件时,它不能工作了。 
原因是Apache Common-Logging使用了ClassLoader寻找和载入底层的日志库。而OSGI中,不同的插件使用自己的ClassLoader。 
一个线程的ClassLoader在执行不同的插件时,其执行能力是不同的。 
OSGI的这种机制保证了插件互相独立,然而确使Apache Common-Logging无法工作! 
  
解决之道是使用新的日志门面库Slf4j。 
Slf4j库类似于Apache Common-Logging。但是,他在编译时静态绑定真正的Log库。使用Slf4j时,如果你需要使用某一种日志实现,那么你必须选择正确的Slf4j的jar包的集合。 
这确实麻烦了一点,但总算可以在OSGI中开发日志了。 
  
其实,这一点点工作也不算麻烦。 

使用CommonLog接口而实际由Slf4j和Log4j实现的过程 
1,项目中照常使用 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
编写日志。 
  
2,仍然在src下使用log4j.properties文件进行配置。 
  
3,使用的所有jar文件: 
1)log4j-1.2.15.jar 这是log4j的库。 Slf4j并不改变这个底层实现库。 
2)slf4j-api-1.5.2.jar   这是Slf4j库。  
3)slf4j-log4j12-1.5.2.jar 这包含Log4j的适配器和静态绑定log4j底层实现。 
4)jcl-over-slf4j-1.5.2.jar 这提供了Commons-Logging接口,以及使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制 。 
  
    这里,我们需要使用Log4j的原生库,但是不需要Commons-Logging的原生库。 
   
OK,把上面这4个jar包复制到lib下,导入项目中,就可以像以往一样继续使用Apache Common-Logging编写日志了。 

分享到:
评论
1 楼 jiahut 2012-02-01  
你说的编译时静态绑定,那使用SLF4J时,切换日志系统后,按照你的说法是需要重新编译应用了?唉。。。。。。

相关推荐

    用maven + spring mvc +JDBCTEMPLATE +由Slf4j实现Common-Logging+Log4j的日志控制(数据库用MySQL)

    4. **Slf4j** - 日志门面,允许用户在运行时选择不同的日志实现,如Common-Logging或Log4j,提供了统一的API进行日志记录。 5. **MySQL** - 常用的关系型数据库管理系统,用于存储应用的数据。 在搭建项目时,首先...

    slf4j+logback 于log4j+commons-logging大PK

    今天我们将聚焦两个流行的日志框架——SLF4J(Simple Logging Facade for Java)和Logback,以及它们与Log4j和Commons-Logging的对比。 SLF4J是一个接口层的日志框架,它提供一个统一的API,允许用户在运行时插入...

    slf4j-jcl-1.7.7.zip

    在实际开发中,结合SLF4J和Jackson这样的开源库,可以构建出高效、灵活且易于维护的Java应用。通过SLF4J-JCL桥接器,我们可以确保日志记录的统一和高效,同时利用Jackson的强大功能处理JSON数据。同时,参与开源社区...

    slf4j-all-log4j12-1.4.3.jar.zip CXF整合SSH你可能需要它

    1. **引入依赖**:首先,在项目的构建配置文件(如Maven的pom.xml或Gradle的build.gradle)中添加CXF、SLF4J和Log4j的相关依赖。 2. **配置Log4j**:在项目中创建log4j.properties或log4j.xml配置文件,设置日志...

    simpletiles0.1 --tiles 2.2.2 去除slf4j 依赖,添加common-logging依赖,并将重新封包

    NULL 博文链接:https://feiyan35488.iteye.com/blog/955366

    JDBC_Hive.rar

    java连接jdbc使用到的13个jar包:commons-logging-1.0.4,hadoop_fat,hadoop-common-2.0.0-cdh4.7.0,hive-...libfb303-0.9.0,libthrift-0.9.0-cdh4-1,log4j-1.2.16,slf4j-api-1.6.1,slf4j-api-1.6.4,slf4j-log4j12-1.6.1

    Common Logging的jar包.zip

    Commons Logging通过提供一个抽象层,允许开发者使用简单的API来记录日志,而具体的日志实现(如Log4j、Java Util Logging或SLF4J)可以根据项目需求或者环境配置进行选择和切换。 Commons Logging的核心概念包括...

    NLog4.4.12-slf4net.0.1.32.1-common.logging.3.4.1

    NLog、Slf4net 和 Common.Logging 是.NET框架中常用的日志记录库,它们在软件开发中扮演着重要的角色,帮助开发者记录程序运行时的信息,便于调试、排查问题和监控系统状态。下面将详细介绍这三个库以及它们在压缩包...

    Spring如何替换掉默认common-logging.jar

    例如,我们可以使用 SLF4J 和 Logback 作为我们的日志工具,引入相关依赖: ```xml <groupId>org.slf4j <artifactId>jcl-over-slf4j <groupId>org.slf4j <artifactId>slf4j-api <version>1.7.7 <groupId>...

    spring+commons-logging

    `commons-logging`是一个轻量级的日志接口抽象层,它允许开发者使用不同的日志实现(如log4j、java.util.logging或JCL-over-SLF4J等)而无需修改代码。这提供了极大的灵活性,使得在不同的环境下可以方便地切换日志...

    DbVisualizer连接Hive数据库所需jar包,包含hive-jdbc等jar

    common-2.1.0.jar,hive-jdbc-0.13.1.jar,hive-service-1.1.0.jar,httpclient-4.5.3.jar,httpcore-4.4.6.jar,libthrift-0.9.2.jar,log4j-1.2.17.jar,slf4j-api-1.5.0.jar,slf4j-log4j12-1.5.0.jar等jar包

    hadoop-2.10.0jar.zip

    包含hadoop平台Java开发的所有所需jar包,例如activation-...slf4j-log4j12-1.7.25.jar snappy-java-1.0.5.jar stax-api-1.0-2.jar stax2-api-3.1.4.jar woodstox-core-5.0.3.jar xmlenc-0.52.jar zookeeper-3.4.9.jar

    ssh2框架工具包

    struts2-core-2.2.3.jar struts2-spring-plugin-2.2.3.jar xwork-core-2.2.3.jar commons-io-2.0.1.jar ...slf4j-nop-1.6.4.jar(这个jar包要去slf4j官网下载slf4j-1.6.4集成包) jdbc: ojdbc14.jar(oracle)

    ssh框架所需jar包

    1.1.jar,junit-4.5.jar,mysql-connector-java-3.1.13-bin.jar,ognl-2.6.11.jar,slf4j-api-1.5.8.jar,slf4j-nop-1.5.8.jar,spring.jar,struts2-convention-plugin-2.1.6.jar,struts2-core-2.1.6.jar,struts2-spring-...

    hadoop 2.0.6的Eclipse插件

    插件需要选择一个目录,该目录即不是hadoop的目录,也不是hadoop src目录,而是你...slf4j-log4j12-1.6.1.jar 所有这些文件均来自hadoop/share/hadoop目录。 指定了这个目录之后再新建MapReduce Project时就不会出错。

    common-log

    因此,一些现代的日志框架,如SLF4J和Logback,更受推崇,它们提供了静态绑定和更高的性能。 总的来说,Apache Commons Logging是Java开发中一个重要的日志抽象层,它简化了日志框架的切换,提高了代码的可移植性。...

    apache-commoms-logging与pdfbox-app-2.0.25的jar包

    Apache Commons Logging 提供了一个接口,使得开发者可以方便地切换不同的日志实现,如 Log4j、Java Util Logging 或者 Simple Logging Facade for Java (SLF4J)。它的主要优点在于解耦了应用程序代码和实际日志实现...

    spring所需的日志jar文件

    最后,"slf4j-log4j12-1.7.12.jar"是Simple Logging Facade for Java (SLF4J)的绑定包,用于桥接SLF4J接口和Log4j 1.2。SLF4J是一个轻量级的日志门面,允许用户在部署时插入任何日志实现,而"slf4j-log4j12"则是将...

    hiveJDBcjar.rar

    commons-logging-1.1.3.jar commons-collections-3.1.jar hive-exec-0.13.1.jar hive-jdbc-0.13.1.jar hive-metastore-0.13.1.jar hive-service-0.13.1.jar ...slf4j-log4j12-1.7.5.jar hadoop-common-2.4.0.jar

Global site tag (gtag.js) - Google Analytics