java日志框架总结

一、日志框架简单分类介绍

java常用的日志框架、可以分为两组:

1、JCL、JUL、Log4j;

2、SLF4J、Log4j2、Logback;

其中第一组是比较早期的日志实现框架,JCL并不是具体的日志实现框架,JCL其实是定义了一套日志接口,具体实现则由 Log4j 或 JUL 来完成。也就是说JCL负责命题,然后Log4j、JUL负责实现。

第二组是目前比较流行的框架,其中SLF4J也不是具体的实现,而是一套日志门面像JCL一样,专门负责命题,然后Log4j2、Logback负责实现,具体的方法。后来SLf4J也兼容了JUL、Log4j。

日志门面 :只提供日志相关的接口定义,即相应的 API,而不提供具体的接口实现。日志门面在使用时,可以动态或者静态地指定具体的日志框架实现,解除了接口和实现的耦合,使用户可以灵活地选择日志的具体实现框架。

日志系统 :与日志门面相对,它提供了具体的日志接口实现,应用程序通过它执行日志打印的功能。

二、JUL

JUL全称Java Util Logging,是Java原生的日志框架,使用时不需要另外引入第三方类库,相对于其他日志框架来说其特点是使用方便,能够在小型应用中灵活应用。但JUL日志框架使用的频率并不高,但一旦需要解除此类的代码,仍然要求开发人员能够迅速看懂代码,并理解。

1、框架结构图:

复制代码
Loggers:
    被称为记录器,应用程序通过获取Logger对象,调用其API来发布日志信息,Logger通常是应用程序访问日志系统的入口程序;
Appenders:
    也被称为Handlers,每个Logger都会关联一组Handlers,Logger会将日志交给关联的Handlers处理,由Handlers负责将日志记录;
    Handlers在此是一个抽象类,由其具体的实现决定日志记录的位置是控制台、文件、网络上的其他日志服务异或是操作系统日志;
Layouts:
    也被称为Formatters,它负责对日志事件中的数据进行转换和格式化,Layouts决定了记录的数据在一条日志记录中的最终显示形式;
Level:
    每条日志消息都有一个关联的日志级别。该级别粗略指导了日志消息的重要性和紧迫,可以将Level和Loggers或Appenders做关联以便于我们
  过滤消息;
Filters:
    过滤器,根据需要定制哪些信息会被记录,哪些信息会被放过。
一个完整的日志记录过程如下:
    用户使用Logger来进行日志记录的行为,Logger可以同时持有若干个Handler,日志输出操作是由Handler完成的;在Handler输出日志前,
  会经过Filter的过滤,判断哪些日志级别放行、哪些拦截,Handler会将日志内容输出到指定位置(日志文件、控制台等);Handler在输出日
  志时会使用Layout对日志内容进行排版,之后再输出到指定的位置。
相关推荐
小师兄吃牛肉9 分钟前
Java语法 | 多重循环
java·开发语言·python
Han.miracle22 分钟前
MySQL InnoDB:MVCC、记录锁、间隙锁、二级索引MVCC底层原理
java·开发语言
.YM.Z30 分钟前
C++——【红黑树】原理详解:定义、性质、插入变色与旋转实现
开发语言·c++
不停喝水1 小时前
【前端转全栈java速通课】 项目实战④7-11节 操作数据库-登录-注册-修改密码-注销-mubatis-plus简化crud-
java·前端·数据库
y1su1 小时前
Leetcode 二分模板
java·数据结构·算法·leetcode·排序算法
leisoo80971 小时前
融资融券数据怎么查两融指标含义与杠杆观察方法 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
霸道流氓气质1 小时前
多Agent通信机制与协议设计完全指南:从FIPA-ACL到A2A/MCP的Java生产级实战
java·开发语言
007张三丰1 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·c语言·c++·内存管理
weixin_419658311 小时前
CANoe 使用指南:从输出窗口到数据回放的完整实战教程
开发语言·功能测试·车载系统·自动化·汽车