slf4j导入那个依赖_SLF4J介绍以及依赖等问题解决

预览

介绍SLF4J 日志接口框架

如何解决日志冲突等常见问题

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。

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

使用SLF4J可将解绑具体的日志框架,方便更好。

SLF4J提供的占位符等功能非常实用。

其实还有很多优点,大家自行搜索 :) 。

使用

引入slf4j-api

当前最新版本是1.7.7.

普通工程 将slf4j-api-1.7.7.jar放到你的类路径;

Maven工程 添加如下依赖:

org.slf4j

slf4j-api

1.7.7

引入日志框架

常用的有 java.util.logging, logback, log4j等。

问题

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文件中去除依赖

org.apache.cassandra

cassandra-all

0.8.1

org.slf4j

slf4j-log4j12

log4j

log4j

使用 exclusion去除依赖。

Eclipse图形界面去除依赖

直接删除就OK了。

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

ifuteng#gmail.com 2014/8/25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值