1.SLF4J是什么?

slf4j是一个日志门面,它不是具体的日志实现框架,而是提供了通用的日志接口,按个人理解来说,是通过接口实现多态,来满足应用在不同日志框架间切换的需求。
例如在程序中我们需要记录日志,使用SLF4J提供的接口来调用:
Logger logger = LoggerFactory.getLogger(Class.class);
logger.info();

上边两行代码中的Logger和LoggerFactory对象均来自SLF4J包中。

具体的日志实现框架,我们可以选择LOG4J,LOGBACK等作为日志的具体实现,但是日志的打印输出统一使用SLF4J提供的接口。

这样在切换日志实现框架时,由于日志打印相关操作都是使用slf4j的接口,和具体的实现无关。只需要替换日志实现框架即可轻松实现日志框架的替换。
 
2.LOGBACK:
logback是一个日志记录框架,本文只介绍开发常用的配置和使用,并没有很深入的说明,有需求的可以看官网文档,很详细的介绍了logback,
本文也是从官网的文档中摘选出了开发常用的配置来说明如何使用该框架记录日志
 
2.1 引入jar包:
使用logback需要引入相关jar包:slf4j-api.jar,logback-core.jar,logback-classic.jar。通过maven引用即可,不多说了。
 
2.2 测试类:
    

package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class HelloWorld1 {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
logger.debug("Hello world.");
}
}

上边的代码及其简单,main方法中使用了SLF4J的Logger对象打印了Hello world字符串,直接运行main方法将得到如下结果:

20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
上边这行输出中,第一个字段的时间是当前系统时间,第二个字段是运行方法所在的线程名称,第三个字段是日志级别
第四个字段是打印日志的类完整路径,- 之后的内容是具体的打印内容
我没做任何的配置,所以以上的输出格式其实就是logback默认的日志格式,日志的默认级别就是DEBUG
 
2.3 打印logback内部状态:
没做任何配置的情况下我们也可以使用,但是默认的格式和日志级别不一定是我们想要的,如果我们想定制需要如何写?
首先打印一下logback日志内部的状态看一下输出结果,修改一下上面的代码如下:
    

  public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld1.class);
logger.debug("Hello world.");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}

再次运行main方法将看到如下的输出:

 

可以看到截图中有三个Could NOT find,这说明在logback在运行时会按顺序找三个文件,但是都没有找到,最后一行Setting up default configuration表明使用默认的配置。
所以如果需要定制logback,只需要提供相应的文件即可。按顺序分别是:logback-test.xml,logback.groovy,logback.xml
那么默认的配置是什么?又在哪里?
答案是logback有个:BasicConfigurator类,这个类的配置就是logback为我们提供的默认配置选项,有兴趣的可以去看看源码。
下一篇介绍logback的简单配置。

使用SLF4J和LOGBACK (一 : 基本使用)的更多相关文章

  1. slf4j log4j logback关系详解和相关用法

    slf4j log4j logback关系详解和相关用法 写java也有一段时间了,一直都有用slf4j log4j输出日志的习惯.但是始终都是抱着"拿来主义"的态度,复制粘贴下配 ...

  2. lombok+slf4j+logback SLF4J和Logback日志框架详解

    maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...

  3. slf4j,log4j,logback 初步使用

    log4j,slf4j,logback简单介绍见 LogBack简易教程 Logback浅析 简单的将,slf4j是一个日志的框架,有各种日志的接口,但是并不包含实际的写日志的方法. log4j,lo ...

  4. 跨过slf4j和logback,直接晋级log4j 2

    今年一直关注log4j 2,但至今还没有出正式版.等不及了,今天正式向大家介绍一下log4j的升级框架,log4j 2. log4j,相信大家都熟悉,至今对java影响最大的logging系统,至今仍 ...

  5. java日志,(commons-loging 、log4j 、slf4j 、LogBack介绍)

    如果对于commons-loging .log4j .slf4j .LogBack 等都已经非常清楚了,可以忽略本文.几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所 ...

  6. How to setup SLF4J and LOGBack in a web app - fast--转载

    原文:https://wiki.base22.com/display/btg/How+to+setup+SLF4J+and+LOGBack+in+a+web+app+-+fast Logback is ...

  7. IDEA项目搭建十——使用slf4j和logback进行日志记录

    .简介 java里面日志分为两部分一个门面.一个实现,我们所熟知的SLF4j.Log4j.Log4j2.Logback的日志组件slf4j是门面提供的统一的入口,具体实现由log4j.log4j2.l ...

  8. Java日志框架(Commons-logging,SLF4j,Log4j,Logback)

    简介 在系统开发中,日志是很重要的一个环节,日志写得好对于我们开发调试,线上问题追踪等都有很大的帮助.但记日志并不是简单的输出信息,需要考虑很多问题,比如日志输出的速度,日志输出对于系统内存,CPU的 ...

  9. java日志之slf4j与logback简单使用

    最近在开发遇到日志是使用slf4j与logback.xml的配置,所以就记录下来了. 1.导入这几个jar包: Logback 分为三个模块:logback-core,logback-classic, ...

  10. SLF4J和Logback日志框架详解

    SLF4J和Logback日志框架详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 本文讲述SLF4J和Logback日志框架.   SLF4J是一套 ...

随机推荐

  1. iscroll中文文档

    转自:http://blog.csdn.net/sweetsuzyhyf/article/details/44195549 IScroll.js 最新版本 v5.1.2 修复了输入框无法输入和横向滚动 ...

  2. vue.js 源代码学习笔记 ----- 工具方法 lang

    /* @flow */ // Object.freeze 使得这个对象不能增加属性, 修改属性, 这样就保证了这个对象在任何时候都是空的 export const emptyObject = Obje ...

  3. zookeeper的c API 单线程与多线程问题 cli_st和cli_mt

    同样的程序,在centos和ubuntu上都没有问题,在solaris上问题却多多,据说是solaris管理更加严格. zookeeper_init方法,在传入一个错误的host也能初始化出一个非空的 ...

  4. 转:JAVA CAS原理深度分析

    看了一堆文章,终于把Java CAS的原理深入分析清楚了. 感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档: http://www.blogjava.net/xylz/ ...

  5. 用JQuery怎么去一次性获取 aspTextBox 文本框的值

    如:<asp:TextBox ID="txtSubject" runat="server">aa</asp:TextBox> 第一次用服 ...

  6. java中遍历类中的属性、调用getter&setter方法

    public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...

  7. ROS机器人操作系统在线练习

    废话不说,先看图吧: 1. ROS in 5 Days Entering ROS 2. ROS Navigation in 5 Days Mastering ROS 3. ROS Autonomous ...

  8. IOS开发 警告 All interface orientations must be supported unless the app requires full screen.

    在IOS开发中遇到警告  All interface orientations must be supported unless the app requires full screen. 只要勾上R ...

  9. Vmware无法正常打开

    VMware的问题 VMware总是搞一些事情,比如隔三差五就打不开了.那么怎么办呢?以前总要把Vm的安装程序重新开始一遍,然后选择修复 但是呢?这样太麻烦了,前几月做web开发的时候接触了Apach ...

  10. (转)如何转载CSDN的文章

    前言   对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间 ...