`
dyy_gusi
  • 浏览: 207051 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

slf4j日志的使用

阅读更多

 

slf4j日志的使用

 

     slf4j(simple logging facade for java)是Java的简单的日志门面,它不是具体的日志解决方案,它只服务于各种各样slf4j-logo的日志系统。这里的slf4j-logo可以是log4j,可以是jdk的日志,可以是logback,还可以是slf4j-simple等等。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。这里其实用到了一种设计模式(Facade设计模式,门面设计模式)。如下图:



 

    实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算用那个具体的日志系统。只需要在项目中加入定的slf4j-logo.jar包就可以。这个和Spring的IOC思想有点像,想用哪个就用哪个,随意切换。

    ​使用slf4j这种记录日志的方式的特点很明显:1、如果我们需要记录的是底层类库或者组件这种东西,就可以不影响或强制要求用户选择哪种日志系统。2、如果我们用特定的日志系统写了代码,但是有一天要求换另一种日志系统,如果之前就用slf4j的api写的,那就很简单,但是如果用具体的一种方式写了以后,那在切换就很麻烦。

在代码中的使用示例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Slf4jTest {
	// 首先获得日志记录这个对象
	static private Logger logger = LoggerFactory.getLogger(Slf4jTest.class);

	public static void main(String[] args) {
		// 记录error信息
		logger.error("[info message]");
		// 记录info,还可以传入参数
		logger.info("[info message]{},{},{},{}", "abc", false, 123,
				new Slf4jTest());
		// 记录deubg信息
		logger.debug("[debug message]");
		// 记录trace信息
		logger.trace("[trace message]");
		System.out.println("hello world");
	}
}

 

 

    具体使用哪种日志系统,这个可以随意切换,演示如下:

1、使用slf4j的simple日志系统:

    在classpath中加入:slf4j-simple.jar,运行程序输入如下:

[main] ERROR com.swu.gusi.Slf4jTest - [info message]

[main] INFO com.swu.gusi.Slf4jTest - [info message]abc,false,123,com.swu.gusi.Slf4jTest@503f0b70

hello world

2、切换成jdk的日志系统:

    在classpath中将slf4j-logo.jar换成slf4j-jdk.jar,运行程序如下:

九月 20, 2014 12:33:52 下午 com.swu.gusi.Slf4jTest main

严重: [info message]

九月 20, 2014 12:33:52 下午 com.swu.gusi.Slf4jTest main

信息: [info message]abc,false,123,com.swu.gusi.Slf4jTest@400da341

hello world

3、切换成log4j的日志系统:

    ​在classpath中将slf4j-logo.jar换成slf4j-log4j.jar,注意这在使用log4j的时候,需要自己配置log4j.properites文件或者log4j.xml。至于log4j的使用查阅其他文档。

http://dyygusi.iteye.com/blog/2118833

4、切换成其他的日志系统和上面相同。

5、如果classpath中有多种日志系统,会怎么样呢。会提示类似如下信息(最好别这样搞):

 

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/E:/Repository/org/slf4j/slf4j-simple/1.7.7/slf4j-simple-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/E:/Repository/org/slf4j/slf4j-jdk14/1.7.7/slf4j-jdk14-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]

[main] ERROR com.swu.gusi.Slf4jTest - [info message]

[main] INFO com.swu.gusi.Slf4jTest - [info message]abc,false,123,com.swu.gusi.Slf4jTest@10e80317

hello world

 

 

  • 大小: 124.3 KB
3
2
分享到:
评论
2 楼 huaerfan 2014-09-20  
一直在使用,没有具体了解过。多谢科普
1 楼 asialee 2014-09-20  
总结的不错,在实际项目开发过程中,看到有的人log4j、slf4j经常用混,还有logback,现在应该logback用的多一点。

相关推荐

    SLF4J日志报错解决办法

    处理slf4j日志使用的基本错误,导入三个包,分别是slf4j-impl,slf4j-api和slf4j-log4j12

    Springboot项目使用Slf4j将日志保存到本地目录的实现代码

    主要介绍了Springboot项目使用Slf4j将日志保存到本地目录的实现方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    slf4j完整日志文件

    基于slf4j的完整资源

    logback-slf4j日志配置文件-下载即可使用

    logback+slf4j 异步日志输出到不同级别的文件-配置文件,下载即可使用。结合lombok【@slf4j】即可方便愉快的输出日志了 666

    slf4j日志,可以使用它代替LOG4J

    slf4j slf4j slf4j日志。日志系统,代替LOG4J,可以去网上搜下使用方法。十分简单有效

    Slf4j日志相关jar包

    Slf4j日志相关jar包 包含log4j Slf4j jboss-logging commons-logging

    非web工程使用slf4j输出日志

    非web工程使用slf4j输出日志 非web工程使用slf4j输出日志 非web工程使用slf4j输出日志

    slf4j日志框架的源代码分享

    slf4j源码,可供参考学习,有兴趣的同学可以自行了解一下

    slf4j日志demo项目 logback.xml配置详解

    slf4j日志demo项目 logback.xml配置详解,slf4j日志demo项目 logback.xml配置详解,slf4j日志demo项目 logback.xml配置详解,slf4j日志demo项目 logback.xml配置详解

    slf4j-gao.rar

    分享我写的彩色控制台日志组件-基于slf4j-simple改造。 有颜色、最简单/全面的log内容、最佳的性能,能够定制所有的内容,所以我写了一个彩色控制台log的java组件。 原创不易多多支持。

    Loger_slf4j写入数据表Demo

    slf4j日志级别有五种:ERROR、WARN、INFO、DEBUG、TRACE,级别从高到底 其示例中取warn级别及写入数据库配置:database 三、配置文件db.properties、log4j.properties两个配置文件可以通过servlet配置来使用,也...

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

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

    slf4j-Logging

    因此,slf4j入口就是众多接口的集合,他不负责具体的日志实现,只在编译时负责寻找合适的日志系统进行绑定。具体有哪些接口,全部都定义在slf4j-api中。查看slf4j-api源码就可以发现,里面除了public final class ...

    SLF4J详细资料

    从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样...

    SLF4J日志框架分享

    SLF4J作为目前流行的日志框架的讲解和分享。很多开源项目都已引入。这里对其做了入门的讲解和分享。

    slf4j 1.6.4

    从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样...

    android slf4j log4j日志框架

    android里的日志框架,很好用,slf4j,附有用例。

    slf4j-api-1.7.5日志打印实验源码

    在另一方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要。假设你打算将你使用log4j的产品卖给要求使用JDK 1.4 Logging的用户时,面对成千上万的log4j调用的修改,相信这绝对...

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

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

    slf4j实现热加载日志级别

    一个简单的例子slf4j实现热加载日志级别

Global site tag (gtag.js) - Google Analytics