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. EFM32 ARM+ KEIl program

    1Hardware connection When using the EFM32 starter kit to make a JLINK burn, you must connect the con ...

  2. 虚拟机中centos7与物理主机通讯

    本地物理机 WIN命令行:ipconfig 查看网络配置 在物理机的网络配置--> 配置VMnet8 打开VMware  编辑虚拟机设置,选择自定义NAT模式(VMnat8) 编辑->虚拟 ...

  3. 新浪云使用smarty模板的方法

    在部署到sina app engine(sae)上时出现了问题,因为sae作为云计算平台式无法进行文件读写操作的,所以Smarty中输出的缓存文件就无法实现. 错误信息:“SAE_Fatal_erro ...

  4. 安装redis-3.2.10单节点

    前段时间安装好的redis,今天用脚本安装的时候突然出现版本异常的问题,所以更新一篇为大家提供参考 本次安装在CentOS6.5,采用的redis-3.2.10,最新的redis-4.0.1安装同样适 ...

  5. UNIX 环境高级编程 文件和目录

    函数stat , fstat , fstatat , lstat stat函数返回与此文件有关的信息结构. fstat函数使用已打开的文件描述符(而stat则使用文件名) fstatat函数 为一个相 ...

  6. UDP示例

    android学习笔记18--------------UDP示例 分类: android2011-11-10 10:07 848人阅读 评论(0) 收藏 举报 androidbufferexcepti ...

  7. 网络编程(Socket)

    引言: 从2007年毕业开始一直从事.net web应用程序开发,负责冶金行业的MES系统开发,写了差不多6年左右的代码,由于工作性质是需要驻厂开发,一直出差,所以在2013年跳槽了,目前从事安防行业 ...

  8. 线性回归 Linear regression(4) 局部加权回归

    这篇文章将介绍过拟合和欠拟合的概念,并且介绍局部加权回归算法. 过拟合和欠拟合 之前在线性回归中,我们总是将单独的x作为我们的特征,但其实我们可以考虑将,甚至x的更高次作为我们的特征,那么我们通过线性 ...

  9. 日志组件logback的介绍及配置使用方法(二)

    四.Logback的默认配置 如果配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurator ,创建一个最小 ...

  10. .NET 中 GetProcess 相关方法的性能

    .NET 的 Process 类中提供了查找进程的若干方法,其中部分方法还比较消耗性能.如果你试图优化查找进程相关方法的性能,可能本文分享的一些耗时数据可以作为参考.   性能比较 Process 类 ...