`
futeng
  • 浏览: 263717 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SLF4J介绍以及依赖等问题解决

    博客分类:
  • Java
阅读更多

预览

  1. 介绍SLF4J 日志接口框架
  2. 如何解决日志冲突等常见问题

SLF4J

The Simple Logging Facade for Java (SLF4J) )serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

上面是SLF4J官网的首段描述,请注意关键字Facade(表面、外观),中文没有一个非常形象的对应词可翻译,导致理解起来非常别扭。句子紧接着又增加了一个描述词abstracting来辅助描述下,估计也有这方面的考虑 :) 。

其实SLF4J只是定义了日志操作的相关接口,而不是具体的日志实现方案,这点跟JDBC非常类似。

为了方便比较,我们不妨看下JDBC的定义(来自百度百科):

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

简单理解,JDBC是使用Java API访问数据库的接口规范,具体的实现由不同数据库厂商提供。

SLF4J也是提供了操作日志的通用接口规范,只要你实现了这些规范接口,那么你就制作了一个符合SLF4J约定的日志框架。
而比较出名的开源日志框架有:java.util.logging, logback and log4j。

为什么不直接使用日志框架

  1. 使用SLF4J可将解绑具体的日志框架,方便更好。
  2. SLF4J提供的占位符等功能非常实用。
  3. 其实还有很多优点,大家自行搜索 :) 。

使用

引入slf4j-api

当前最新版本是1.7.7.

 

普通工程 将slf4j-api-1.7.7.jar放到你的类路径;
Maven工程 添加如下依赖:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
</dependency>

 


引入日志框架

常用的有 java.util.logging, logback, log4j等。<!--EndFragment-->

 

问题

slf4j-api只定义了日志接口​,如果没有放置具体的日志实现框架,那么日志程序自然无法使用。
注意:SLF4J会自动在类路径寻找日志实现框架。
那么未放置则会出现,找不到日志框架的问题,放多了则会出现提示找到了多个日志框架,哈哈。

 

未找到可绑定的日志框架

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details

 

很显然,你添加一个就行。

 

绑定了多个实现类

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/Workspace/Code/Maven.rep/org/slf4j/slf4j-simple/1.7.7/slf4j-simple-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/Workspace/Code/Maven.rep/org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]

 

也很简单,去除多余的就好

使用Eclipse-maven去除依赖问题的技巧

强大的maven管理工具,去除重复依赖问题非常简单。

 

POM文件中去除依赖

<dependencies>
  <dependency>
    <groupId> org.apache.cassandra</groupId>
    <artifactId>cassandra-all</artifactId>
    <version>0.8.1</version>
    <exclusions>
      <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
      </exclusion>
      <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
</dependencies>

 

 

使用 exclusion去除依赖。

Eclipse图形界面去除依赖



 

 

直接删除就OK了。

 

转载请标明作者和原文链接

 

ifuteng#gmail.com 2014/8/25

  • 大小: 23.9 KB
3
0
分享到:
评论
1 楼 andy20160606 2016-11-01  
不错。建议用看图的方式,点一下之后以为没反应,其实已经去除依赖了,再次看到的人看到我的留言希望对你们有帮助!

相关推荐

    Java Slf4j依赖包

    Java Slf4j,全称为Simple Logging Facade for Java,是一个为各种日志框架提供一个简单统一的接口,使得最终用户能够在...正确理解和使用Slf4j,能够帮助我们更好地管理和监控应用的运行状态,及时发现和解决问题。

    slf4j1.7.7完整依赖.zip

    log4j1.2.17完整依赖,与slf4j版本匹配,解决log4j与slf4j小版本不一致的问题。包含:log4j1.2.17.jar,slf4j-api-1.7.7.jar,slf4j-log4j12-1.7.7.jar

    slf4j 所需要的jar包

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的API,如Log4j、Java Util Logging、Logback等。这样,开发者可以在不修改代码的情况下更换底层的日志实现。SLF...

    slf4j最新jar包下载和jar包

    在描述中提到的"lombok.extern.slf4j.Slf4j注解错误",这可能是指在使用Lombok和SLF4J时遇到的一些问题,例如缺少对应的依赖、配置错误或者版本不兼容。为了解决这些问题,通常需要检查以下几点: 1. 确保项目中已...

    slf4j jar包

    1. **API接口**:SLF4J提供了统一的日志API,定义了各种日志级别(TRACE, DEBUG, INFO, WARN, ERROR, OFF)以及相关的方法,如log()、debug()、info()等。 2. **绑定**:SLF4J API本身并不实现任何日志记录,它只是...

    slf4j-api-1.7.7,slf4j-log4j12-1.7.7

    SLF4J的出现主要是为了解决Java日志API的碎片化问题,让应用的日志配置更加灵活。 标题中的"slf4j-api-1.7.7"指的是SLF4J API的1.7.7版本,它是SLF4J的核心组件,包含了SLF4J的日志API定义。这个库提供了日志记录的...

    slf4j 1.7 所有jar包

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个简单的API,允许开发者在应用程序中使用各种日志框架,如Log4j、Logback等,而无需直接依赖特定的日志实现。SLF4J 1.7是其的一个...

    slf4j的jar包(54个)

    9. **不同版本的jar包**:可能包含不同版本的SLF4J及其绑定库,用于兼容不同版本的应用或解决版本冲突问题。 在使用这些jar包时,通常只需要slf4j-api.jar和一个绑定库(如slf4j-log4j12.jar)。其他jar包可以根据...

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案.docx

    本文将详细介绍如何使用Slf4j集成Log4j2构建项目日志系统的完美解决方案。 背景: 随着项目的发展,对日志系统的需求也在不断增加。传统的日志系统基于Log4j,但是在高并发情况下,Log4j 1.x会出现死锁,导致CPU...

    slf4j-log4j12-1.5.5.jar、slf4j-log4j12-1.5.6.jar、slf4j-api-1.5.6.jar

    通过SLF4J,开发者可以在不修改代码的情况下,切换不同的日志实现,这对于多模块项目尤其有用,因为每个模块都可以依赖SLF4J,而项目的全局日志策略可以根据需求独立调整。 当使用slf4j-log4j12-1.5.x.jar时,需要...

    java slf4j

    3. **社区支持**:由于SLF4J的广泛使用,其社区活跃,遇到问题时容易找到解决方案。 4. **性能优化**:通过参数化日志,SLF4J能够避免在日志级别高于当前设置时进行不必要的字符串拼接。 总之,SLF4J作为Java日志...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    Log4j和SLF4J(Simple Logging Facade for Java)是两个广泛使用的日志框架,它们各有优势并常被一起使用以提供更灵活的日志解决方案。本文将详细探讨如何通过SLF4J接口来使用Log4j进行日志记录,并展示一个测试代码...

    slf4j-1.6.0以及slf4j-1.7.7 包下载

    在给定的压缩包"slf4j-1.6.0以及slf4j-1.7.7 包下载"中,包含了SLF4J的两个不同版本。SLF4J的1.6.0和1.7.7分别是该库在2011年和2013年的稳定版本,它们之间的主要差异可能包括性能优化、bug修复和对新Java版本的支持...

    Slf4j-1.5.8

    7. **文档和示例**:压缩包可能还包括用户手册、API文档以及演示如何使用SLF4J的示例代码,这对于学习和理解SLF4J的工作原理非常有帮助。 在实际应用中,SLF4J的使用通常包括以下步骤: 1. 引入slf4j-api.jar依赖...

    slf4j输入日志到mongodb

    SLF4J(Simple Logging Facade for Java)是Java中一个用于日志记录的抽象层,它提供了一种标准的日志记录接口,使得开发者可以选择不同的日志实现框架,如Log4j、Logback等。MongoDB则是一个流行的NoSQL数据库系统...

    slf4j-1.5.5

    SLF4J(Simple Logging Facade for Java)是Java平台上的一种日志抽象层,它为各种日志框架,如Log4j、Java Util Logging、Logback等提供了一个统一的接口,使得开发者能够在运行时选择合适的日志实现。SLF4J的1.5.5...

    slf4j 1.6.1所有jar包

    这个“slf4j 1.6.1所有jar包”包含了SLF4J API和其他绑定实现,包括slf4j-api-1.6.1、slf4j-simple-1.6.1和slf4j-jdk14-1.6.1。这些组件协同工作,为Java应用程序提供灵活的日志记录能力。 **SLF4J API(slf4j-api-...

    slf4j-1.7.17

    SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,如Log4j、java.util.logging、Logback等。选择SLF4J而非直接使用Log4J的原因主要在于以下几个方面: 1...

    slf4j1.5.8,log4j1.2.15

    2. **导入依赖**:确保你的项目正确地包含了SLF4J API和对应的绑定器(如slf4j-log4j12),以及Log4j的实现库。 3. **避免版本冲突**:不同版本的SLF4J和Log4j可能不兼容,所以要确保所有相关库的版本协调一致。 4...

Global site tag (gtag.js) - Google Analytics