java笔记1-日志

Java笔记1-日志

1.日志

1.日志基本

日志文件用于记录操作系统事件的文件集合,可以处理历史数据,诊断问题以及理解系统活动具有重要作用。

java的日志框架拥有以下作用:

  • 控制日志输出的内容和格式。

  • 控制日志输出的位置。

  • 日志文件相关的优化,如异步操作、归档、压缩

  • 日志系统的维护

  • 面向接口开发-日志的门面

2.JUL

JDK是自带日志系统的,但是功能性比较差。包含以下组件:

  • Logger:被称为记录器,应用程序通过获取Logger对象,抵用其API来发布日志信息。Logger通常被认为是访问日志系统的入口程序。
  • Handler:处理器,每个Logger都会关联一个或者是一组 Handler,Logger 会将日志交给关联的Handler去做处理,由Handler 负责将日志做记录。Handler具体实现了日志的输出位置,比如可以输出到控制台或者是文件中等等。
  • Filter:过滤器,根据需要定制哪些信息会被记录,哪些信息会被略过。
    Formatter:格式化组件,它负责对日志中的数据和信息进行转换和格式化,所以它决定了我们输出日志最终的形式。
  • Level:日志的输出级别,每条日志消息都有一个关联的级别。我们根据输出级别的设置,用来展现最终所呈现的日志信息。根据不同的需求,去设置不同的级别。

JDK将日志分为七个等级,如下表从左到右依次降低,将级别设置为x,x左边的会输出,x右边的不会输出。

image-20230202163655310

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.logging.Level;
import java.util.logging.Logger;

public class LogJDKTest {
private static Logger log = Logger.getLogger(LogJDKTest.class.toString());

public static void main(String[] args) {
// all→finest→finer→fine→config→info→warning→server→off
// 级别依次升高,后面的日志级别会屏蔽之前的级别
log.setLevel(Level.INFO);
log.finest("finest");
log.finer("finer");
log.fine("fine");
log.config("config");
log.info("info");
log.warning("warning");
log.severe("server");
}
}

/*输出
六月 23, 2021 11:07:29 上午 com.test.log.LogJDKTest main
信息: info
六月 23, 2021 11:07:29 上午 com.test.log.LogJDKTest main
警告: warning
六月 23, 2021 11:07:29 上午 com.test.log.LogJDKTest main
严重: server
*/

3.log4j1

一个日志框架,日志信息输送的目的地包括控制台,文件,GUI组件服务器等。可以控制日志的生成过程,通过maven的配置文件进行灵活配置。

4.logback

一个开源日记组件,分成三个模块:

  • logback-core,其他两个模块的基础模块。

  • logback-classic,完整实现了slf4j API,用于日志系统切换。

  • logback-access,提供通过http访问日志的功能。

2.门面模式

1.定义

**核心:**外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。Facade拥有以下特点:

  • 知道所有子角色的功能和责任
  • 将客户端发来的请求委派到子系统中,没有实际业务逻辑
  • 不参与子系统内业务逻辑的实现

image-20230202162516502

3.slf4j

1.含义

由于工程里的不同依赖包可能会使用不同的日志系统,slf4j扮演了一个适配层的角色,由适配层决定使用哪一种日志系统。而后端只需打引日志即可。因此,slf4j只是一个日志标准,不是日志系统的具体实现。slf4j-simple、logback都是slf4j的具体实现。

2.实现

关于实现:没有看懂。。。贴一个链接用到了再看

https://www.cnblogs.com/xrq730/p/8619156.html


java笔记1-日志
http://example.com/2023/02/03/java笔记1-日志/
作者
Mr Pony
发布于
2023年2月3日
许可协议