SLF4J是Simple Logging System for Java的缩写

SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现,抽象了各种日志框架例如Logback、Log4j、Commons-logging和JDK自带的logging实现接口。它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。

SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。

下载SLF4J的API

通过这个链接下载:

http://www.slf4j.org/download.html

SLF4J API用法

1. 从org.slf4j包导入Logger和LoggerFactory

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

2. 声明日志类

privatefinalLogger logger = LoggerFactory.getLogger(LoggingSample.class);

3. 使用debug、warn、info、error方法并跟踪适合的参数。

所有的方法默认都使用字符串作为输入。

logger.info("This is sample info statement");

SLF4J结合Logback

在pom.xml包含下面的依赖:它会自动包含所有的依赖包logback-core、slf4j-api……

ch.qos.logback

logback-classic

1.0.7

SLF4J能用于现有的日志框架如Log4j、Commons-logging、java.util.logging(JUL)。

SLF4J结合Log4j

在pom.xml包含下面的依赖

org.slf4j

slf4j-log4j12

1.7.2

SLF4J结合JUL (java.util.logging)

在pom.xml包含下面的依赖

org.slf4j

slf4j-jdk14

1.7.2

下边一段程序是经典的使用slf4j的方法.

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Wombat {

final Logger logger = LoggerFactory.getLogger(Wombat.class);

Integer t;

Integer oldT;

public void setTemperature(Integer temperature) {

oldT = t;

t = temperature;

logger.error("Temperature set to {}. Old temperature was {}.", t, oldT);

if (temperature.intValue() > 50) {

logger.info("Temperature has risen above 50 degrees.");

}

}

}

public static void main(String[] args) {

Wombat wombat = new Wombat();

wombat.setTemperature(1);

wombat.setTemperature(55);

}

}

下边介绍一下运行上边程序的过程。

1,编译上边的程序,需要classpath中加入slf4j-api-1.4.1.jar文件

2,运行时,需要classpath中加上slf4j-simple-1.4.1.jar

运行得到结果:

----------------------------

0 [main] ERROR Wombat - Temperature set to 1. Old temperature was null.

0 [main] ERROR Wombat - Temperature set to 55. Old temperature was 1.

0 [main] INFO Wombat - Temperature has risen above 50 degrees.

这个是simple log风格,

3,切换:如果想切换到jdk14的log的风格,只需要把slf4j-simple-1.4.1.jar 从classpath中移除,同时classpath中加入slj4j-jdk14-1.4.1.jar 这时的运行结果: --------------------------------------------------- 2007-7-9 10:40:15 Wombat setTemperature 严重: Temperature set to 1. Old temperature was null. 2007-7-9 10:40:16 Wombat setTemperature 严重: Temperature set to 55. Old temperature was 1. 2007-7-9 10:40:16 Wombat setTemperature 信息: Temperature has risen above 50 degrees. 已经变成jdk14的log风格了。 4,再次切换到log4j 同样移除slj4j-jdk14-1.4.1.jar,加入slf4j-log4j12-1.4.1.jar,同时加入log4j-1.2.x.jar 加入log4j.properties。得到显示结果: --------------------------------------- 10:42:27,328 ERROR Wombat: Temperature set to 1. Old temperature was null. 10:42:27,328 ERROR Wombat: Temperature set to 55. Old temperature was 1. 10:42:27,328  INFO Wombat: Temperature has risen above 50 degrees. 在不同的风格中切换只需要在部署期切换类库就可以了,和开发时无关。

Java中slf4j日志使用_java的日志记录工具 slf4j的使用相关推荐

  1. 12月29日--Java中有关类与对象的学习记录

    1.12月29日第一课记录 Java中有关类与对象的学习记录 一.基本概念部分 1.类:具有相同.相似的属性.特征.行为方式以及功能的一类事物的总称 (举例:一类用户,如淘宝用户) 类是对象的模板 是 ...

  2. java中的工厂模式_java中工厂模式详解和使用方法

    工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 ...

  3. java中集合怎么定义_Java集合系列(一):集合的定义及分类

    1. 集合的定义 什么是集合呢? 定义:集合是一个存放对象的引用的容器. 在Java中,集合位于java.util包下. 2. 集合和数组的区别(面试常问) 提到容器,就会想起数组,那么集合和数组的区 ...

  4. java中注解的使用_java中注解的使用

    使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...

  5. java中组件与容器_java中的容器组件和非容器组件

    1.java使用到的图形类主要在java.awt 与javax.swing包中. 2.java.awt 与 javax.swing包的区别: ① java.awt中使用的图形类都是依赖于系统的图形库的 ...

  6. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  7. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  8. java中飞飞检查异常_Java复习6异常处理

    Java复习6.异常处理 20131005 前言: Java中的异常处理机制是非常强大的,相比C++ 来说,更加系统.但是我们开发人员没有很好的使用这一点.一些小的程序是没有什么问题的,但是对于大型项 ...

  9. java中标签怎么用_Java中标签的使用

    很多程序设计语言中有goto语句,goto语句的使用,使的程序变得难以读懂,尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用:Java没有goto.然而,在break和continue ...

最新文章

  1. YOLO v1到YOLO v4(上)
  2. Angular响应式表单及表单验证
  3. Android在eoe分享一篇推荐开发组件或者框架的文章
  4. 为了杀蚊子,这位博士用树莓派DIY了一把激光枪!网友:伤到人怎么办?
  5. txt文件分解为固定条数的文件
  6. 一个表格中文字怎么换行_Excel表格中怎样快速将阿拉伯数字转化为大写文字?这样操作一键完成...
  7. python中while。。。。else的用法
  8. WIN7的便签使用快捷键
  9. VC2015搭建OpenCV环境(超详细教程)
  10. 【Scratch-声音模块】音量控制
  11. android第三方登录appid,Android 第三方登录之支付宝登录
  12. mocc javascript
  13. 用verilog编写按键消抖代码
  14. stata学习笔记|离散被解释变量
  15. 苹果终止位置共享无法连接服务器,苹果发布临时解决方案指导用户处理macOS无法共享访问Windows的问题...
  16. CorelDRAWX4的C++插件开发(四十三)VBA的错误返回机制
  17. 从数学和编程的角度去看遥感影像和处理
  18. 马化腾微信朋友圈惋惜小黄车 网友们狂赞 并替Pony搞起情怀大接龙
  19. Blender基础:多边形建模中F命令和J命令的区别
  20. vtk 显示效果设置

热门文章

  1. 《Vim实用技巧(第2版)》学习笔记:技巧12-双剑合璧,天下无敌
  2. ES常用查询操作学习总结(13种)
  3. ESP-NOW组网(esp8266)
  4. css文字超出元素省略,单行、多行省略
  5. mysql聚合函数统计_mysql学习-mysql聚合函数和分组统计
  6. paho | 支持10种语言编写mqtt客户端,总有一款适合你!
  7. Windows live writer 2011下载太慢了
  8. 德国电动车制造企业Ego申请破产保护
  9. 块元素、行内元素、行内块元素区别及其作用
  10. Flink MapState的实践