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. Python基本常用算法

    什么是算法 就是一个计算的过程,解决问题的方法 用到知识点 递归 调用自身 有结束条件 下次执行相应的复杂度要减少 时间复杂度排序(按效率排序) O(1)<O(logn)<O(n)< ...

  2. UITextView文字上方一段空白的解决方法

    添加 self.automaticallyAdjustsScrollViewInsets = NO; 凡是继承UIScrollView的控件都会受到UIViewController的这个automat ...

  3. Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法

    这里也会遇到一次性关闭所有modal引起阴影遮罩的问题,也就是所有modal都关闭了,但是主页面仍然被阴影遮罩. 这个问题从哪来的,是因为modal叠加,我们点击窗口之外的空白部分,一次性关闭所有mo ...

  4. 关于str==null与str.trim().equal("")用作判断的疑问

    今天同学调试jsp页面的表单传值, 从a.jsp页面提交表单数据(就一项数据)到b.jsp页面, 在b.jsp页面设置一个判断,来检验接收到的数据是否为空, 若使用str==null做判断,无传值过来 ...

  5. MayBatis与Spring的整合

    1. 步骤 第一步:导入相关的jar包(spring和mybatis) mybatis-spring-*.jar spring-jdbc-*.jar spring-tx-*.jar 第二步:sprin ...

  6. linux 系统优化+定时任务

    安装软件 通过yum安装 自动补全工具:yum completion yum install -y tree bash-completion wget vim find -[TAB] 更改系统的yum ...

  7. vue中axios的深入使用

    如上所示一条简单的请求数据,用到了vue中axios,promise,qs等等 这里我将vue中用到的axios进行了封装方便日后使用  先对工具类进行封装utils/axios.js: // 引入模 ...

  8. [QT]数据库SQLITE使用错误记录

    1.仿照创建数据库的例程编写代码,出现以下问题: ① 创建QSqlQuery query;   注意:这里没有将 query 与 QSqlSatabase db, 关联,正确的应该是 : QSqlQu ...

  9. phpcms修改增加编辑时摘要自动提取的数量

    \caches\caches_model\caches_data\model_field_1.cache.php 搜索 name="introcude_length" value= ...

  10. Javascrpt 速成篇】 三:js事件处理

    ie和chrome,firefox的事件处理,除了函数名字不同,基本大同小异.这样就已chrome为主了,对ie有兴趣的自己去百度.jquery已经处理不同浏览器兼容性问题,推荐使用. 事件处理有两种 ...