1. 日志框架是一套能实现日志输出的工具包
2. 能够描述系统运行状态的所有时间都可以算作日志
比如用户下线,接口超时,数据库崩溃 等等都算作日志

 日志框架的能力


定制输出目标
日志框架能定制输出目标,System.out.println只能输出到控制台,我们需要把日志输出到配置文件.某些系统可能还需要定制日志输出的滚动策略,比如一天一个日志文件,甚至有的集群系统要求输入日志文件到数据库或者是网络的第三方服务
定制输出格式
能够通知配置文件修改日志输出的具体内容, 在不修改代码的情况下可以自由的定制日志格式,方便后期的加工和处理.
携带上下文信息
上下文信息包括时间戳,类路径,线程,调用堆栈等等
运行时选择性输出
现在系统正常,我只关心正常的日志,假如现在系统响应的特别慢,我可以调整日志级别
灵活的配置
配置灵活,不需要改动代码重写编译,直接通过修改配置文件的方式修改配置.
优异的性能
日志是业务之外的东西,主要是偏运维的,记录系统状态的,如果因为记录日志而拖慢了系统性能就得不偿失,

 几种常用的日志





slf4j是一系列日志的接口,是日志框架的抽象类

logback是日志框架,是log4j的作者设计完成的,拥有更好的特性,用来取代了log4j的一个日志框架.

最佳的组合是 SLF4j + Logback

1.日志门面

JCL SLF4j jboss-logging

2.日志实现

Log4j log4j2 Logback JUL


(二)占位符

@Test
public void test1() {
String name = “imooc”;
String password = “123456”;
log.debug(“debug…”);
//这种方式比较low
log.info(“name: “ + name + “ ,password: “ + password);
//用这种方式写比较好 log.info(“name: {}, password: {}”, name, password);
log.error(“error…”);
log.warn(“warn…”);
}


 几种日志框架的关系图

1.Java常用的日志框架对比和深入分析

前言
作为一名资深的开发人员,对于日志记录框架一定不会很陌生。而且几乎在所有应用里面,一定会用到各种各样的
日志框架用来记录程序的运行信息。而对于一个成熟的java应用,这个是必不可少的。在开发和调试阶段,日志可以帮助我们更快的定位问题;而在应用的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多企业会通过收集日志信息来对系统的运行状态进行实时监控预警。那么,你对日志框架到底有多了解呢?

常用的日志框架
Log4j
Log4j是apache下一个功能非常丰富的java日志库实现,Log4j应该是出现比较早而且最受欢迎的java日志组
件,它是基于java的开源的日志组件。Log4j的功能非常强大,通过Log4j可以把日志输出到控制台、文件、用户界面。也可以输出到操作系统的事件记录器和一些系统常驻进程。值得一提的是:Log4j可以允许你非常便捷地自定义日志格式和日志等级,可以帮助开发人员全方位的掌控自己的日志信息

Log4j2
Log4j2是Log4j1的升级版本。Log4j2基本上把Log4j版本的核心全部重构掉了,而且基于Log4j做了很多优化和改变

Logback
Logback是由Log4j创始人设计的另一个开源日志组件,也是作为Log4j的替代者出现的。而且官方是建议和
Slf4j一起使用,你们一定不知道Logback、slf4j、Log4j都是出自同一个人吧。 Logback是在Log4j的基础上做的改进版本,而Slf4j又是同一个人设计的,所以默认就对Slf4j无缝结合。

JDK-Logging
Jdk1.4版本以后开始提供的一个自带的日志库实现

统一日志模块
目前市面上有两个用得比较广泛的统一日志规范接口,分别是

SLF4j
SLF4j(Simple Logging Facade For Java)是基于API的java日志框架,SLF4j提供了一个简单统一的日
志记录接口,开发者在配置和部署时,只需要实现这个接口就可以实现日志功能。可以说,它并不是一个具体的日志解决方案,它只是服务于各种各样的日志系统,允许最终用户在部署应用上使用自己常用的日志系统

Commons-Logging
Common-logging 为众多具体的日志实现库提供了一个统一的接口,和SLF4j的作用类似,它允许在运行时绑定任意的日志库;
这里其实有个小故事,当年apache说服Log4j以及其他的日志框架按照Commons-Logging的标准来编写,但是由于Commons-Logging的类加载有点问题,实现起来不友好。因此Log4j的作者就创作了Slf4j,也因此与Commons-Logging两份天下

2. 图说几个日志框架的关系


相关概念 - 图1