【日志框架】log4j、log4j2、logback、slf4j等常用的日志框架及门面

摘要:
log4j和Logback则是具体的日志实现方案。可以简单的理解为接口与接口的实现,调用这只需要关注接口而无需关注具体的实现,做到解耦比较常用的组合使用方式是Slf4j与Logback组合使用,CommonsLogging与Log4j组合使用Logback必须配合Slf4j使用。可以在软件部署的时候决定要使用的Logging框架,目前主要支援的有JavaLoggingAPI、Log4j及logback等框架。SLF4J的作者就是Log4j和Logback的作者CekiGülcü四、日志实现框架JulJavaUtilLogging,自Java1.4以来的官方日志实现Log4jApacheLog4j是一个基于Java的日志记录工具。

一、在Java程序中常用日志框架可以分为两类:

  1. 无具体实现的抽象门面框架,如:Commons Logging、SLF4J
  2. 具体实现的框架,如:Log4j,Log4j 2,Logback,Jul

二、常用日志框架之间的关系

  1. Log4j2与Log4j1发生了很大的变化,log4j2不兼容log4j1
  2. Commons Logging和Slf4j是日志门面(门面模式是软件工程中常用的一种软件设计模式,也被称为正面模式、外观模式。它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用)。log4j和Logback则是具体的日志实现方案。可以简单的理解为接口与接口的实现,调用这只需要关注接口而无需关注具体的实现,做到解耦

  3. 比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用
  4. Logback必须配合Slf4j使用。由于Logback和Slf4j是同一个作者,其兼容性不言而喻

三、日志门面框架

日志门面:是门面模式的一个典型的应用,门面模式,也称外观模式,请参照我的博文设计模式之外观模式,日志门面框架就使一套提供了日志相关功能的接口而无具体实现的框架,其调用具体的实现框架来进行日志记录。也就是说日志门面天然的兼容日志实现框架。典型的日志门面就是Commons Logging、SLF4J

使用日志门面的优点:

日志门面是介于具体的日志框架与系统之间的桥梁,通过日志门面框架的应用实现了系统与具体实现日志框架的解耦。无论具体实现的日志框架如何变化,都不会影响系统日志的记录功能,更无须更改系统代码,符合“开放-闭合原则”

Commons Logging:

Apache Commons Logging是一个基于Java的日志记录实用程序,是用于日志记录和其他工具包的编程模型。它通过其他一些工具提供API,日志实现和包装器实现

SLF4J:

Java简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,以外观模式实现。可以在软件部署的时候决定要使用的 Logging 框架,目前主要支援的有Java Logging API、Log4j及logback等框架。以MIT 授权方式发布。SLF4J 的作者就是 Log4j和Logback 的作者 Ceki Gülcü

四、日志实现框架

Jul

Java Util Logging,自Java1.4以来的官方日志实现

Log4j

Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目

Log4j2

Apache Log4j 2是apache开发的一款Log4j的升级产品,并且不兼容Log4j

Logback

Logback是一个日志框架,Log4j是同一作者,都出自Ceki Gülcü之手

五、Java 日志框架的选择

  1. 成本考虑:Logback文档免费。Logback的所有文档是全面免费提供的,不象Log4J那样只提供部分免费文档而需要用户去购买付费文档
  2. 资源开销:Commons Logging相比较与SLF4J开销更高
  3. 性能:Logback相比Log4j、Log4j2拥有更好的性能。Logback声称:某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在Logback中需要3纳秒,而在Log4J中则需要30纳秒。LogBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的

参考:https://blog.csdn.net/xintonghanchuang/article/details/90752323

免责声明:文章转载自《【日志框架】log4j、log4j2、logback、slf4j等常用的日志框架及门面》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇swagger 的使用Java文件的写入下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.net/c#常用框架/中间件简介

任务调度 Quartz.NET:Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。Quartz.NET允 许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还...

eclipse如何使用log4j详解,你get了吗???

1.下载log4j    jar包 log4j下载地址 http://logging.apache.org/log4j/2.x/download.html 2.log4j   jar包引入项目 接下来会弹出这样一个框,在搜索框搜索 java Build Path 选中java Build Path之后,选择Libraries 点击之后会弹出一个路径选...

将 .NET Framework 项目转换为 .NET Standard 项目

将 .NET Framework 项目转换为 .NET Standard 项目 独立观察员 2020 年 8 月 20 日 如今 .NET Core 是未来发展的主流(至少在 .NET 5 发布之前),而我们如果要改造一个项目为 .NET Core 项目,则它引用的项目应当先改造为 .NET Standard 项目。 下表给出了每种平台支持指定的 .NET...

20个2020年最优秀的PHP框架回顾

这篇文章主要介绍了20个2020年最优秀的PHP框架回顾,简单分析了目前比较主流的优秀框架供大家参考,需要的朋友可以参考下   对于Web开发者来说,PHP是一款非常强大而又受欢迎的编程语言。世界上很多顶级的网站都是基于PHP开发的。本文我们就来回顾一下20个2020年最优秀的PHP框架。 每一个开发者都知道,拥有一个强大的框架可以让开发工作变得更加快捷...

71款开源项目

71款开源项目 百度,一家让人既爱又恨的企业,血友吧贴吧被卖,魏则西事件的持续发酵,一时间将百度推到了舆论的风口浪尖上。是非对错,我们在这里也不多做评判,本文呢为大家整理了百度开源的70+项目,看看有没有感兴趣的。本文内容综合整理自oschina、github。 1. JavaScript图表库 ECharts ECharts开源来自百度商业前端数据可视化...

Web后台快速开发框架(.NET Core)

Web后台快速开发框架(.NET Core) Coldairarrow 目录 目录 第1章    目录    1 第2章    简介    3 第3章    基础准备    4 3.1    开发环境要求    4 3.2    基础数据库构建    4 3.3    运行    5 第4章    详细教程    7 4.1    代码架构    ...