java常用日志框架及日志

JAVA日志

在这里插入图片描述
1、常见的日志框架
无具体实现的抽象门面框架:
JCL(Comons logging,Spring框架默认-抽象层)
slf4j(主流java日志抽象层)
Jboss-logging(Hibernate框架默认-抽象层)

具体实现的框架:
JUL(JVM Runtime,java中util包内置日志框架)
log4j(Mybatis框架默认)
log4j2(log4j的修订版)
logback(轻量日志实现)

日志框架及实现介绍抽象or实现
JCLjcl是apache公司jakarta小组开发的日志框架,不再更新(止步2014),版本较老抽象
Jboss-logging功能过于高大上,不适合普通程序员使用(平时开发很少用到)抽象
slf4j(Simple Logging Facade For Java)是专门为java打造的一个日志框架(日志抽象层)抽象
JUL(java.util.logging)是java中util包内置的一个日志,是基于log4j的竞争而产生(用着也不赖)具体实现
Log4jlog4j很强,但是存在一定的性能问题,为了与slf4j整合实现,要大改整个实现功能,但是这样的话还不如重新再写一个具体实现
Log4j2后者对其加强修改,升级了log4j,功能太过强大,与现有的日志抽象层框架不易整合具体实现
Logback正由于log4j存在性能问题,开发者再次开发一个轻量日志实现-logback
slf4j和log4j和Logback都是由Ceki Gülcü编写,所以在选择日志抽象层和日志实现时,可以优先考虑

常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。

JDK自带了logging,log4j1、log4j2、logback ,这些框架都自己定制了日志 API ,并且有相应的实现;目前用于实现日志统一的框架 Apache commons-logging、slf4j ,遵循面向接口编程的原则,这两大框架可以让用户在程序运行期间去选择具体的日志实现系统(log4j1\log4j2\logback等)来记录日志,是统一抽象出来的一些接口

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

日志门面的优点:

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

现今,Java日志领域被划分为两大阵营: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ü.

SpringBoot:底层是Spring框架,Spring框架默认是用JCL;
而SpringBoot是选用 SLF4框架j,由logback来实现。

开发过程中,想调用日志记录方法,不应该直接调用实现类(logback)中的方法,而是应该调用日志抽象层(slf4j)的方法。
首先导入slf4j和logback的jar包依赖;

            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.5</version>
        </dependency>

使用案例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

参考:
https://baijiahao.baidu.com/s?id=1715746137882792664&wfr=spider&for=pc
https://blog.csdn.net/qq_52596258/article/details/119539867

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值