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

一、在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

猜你喜欢

转载自www.cnblogs.com/Y-S-X/p/12142408.html