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. LeetCode OJ:Rotate List(旋转链表)

    Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...

  2. 如何让VS2013编写的程序在xp下运行

    总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...

  3. 剑指offer--48.机器人的运动范围

    这道题不是要求走一趟最多走多少,而是最多走多少,WA几次才想通. ------------------------------------------------------------------- ...

  4. vue.js 源代码学习笔记 ----- 工具方法 perf

    import { inBrowser } from './env' export let mark export let measure if (process.env.NODE_ENV !== 'p ...

  5. Ubuntu 中sendmail 的安装、配置与发送邮件的具体实现

    一.安装 ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmail先要安装两个包. 必需安装的两个包: 代码  sudo apt-get install sendmail ...

  6. mssqlserver SQL注释快捷键

    注释快捷键 选中语句(快捷键:光标定位到需要注释块的最顶行,按住shift+home选中行,放开再按下shift+向下键,选中块) 按住Ctrl然后依次按K,C取消注释快捷键 选中语句 按住Ctrl然 ...

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

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

  8. 添加operations模块

    添加operations模块,models内容为: from django.db import models from datetime import datetime from users.mode ...

  9. vue 初级小总结

    (1)插值,即渲染文本 文本:数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值 <h1>{{ message }}</h1> data() { return ...

  10. flowable ContentEngine和ContentEngineConfiguration的关系

    一.CommandExecutor ContentEngineConfiguration继承自 AbstractEngineConfiguration. 在 AbstractEngineConfigu ...