• 日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2


    slf4j 是众多日志框架接口的集合(俗称日志门面),它不负责具体的日志实现,只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用,这里主要讲一下常用的几种

    Logback 、 Log4j、Log4j2

    首先看看日志级别的差别:

    Logback、Log4j和Log4j2都支持类似的日志级别,但是它们的具体实现略有不同:

    1. Logback的日志级别(按照从低到高排序)为:TRACE、DEBUG、INFO、WARN、ERROR。Logback还提供了一个OFF级别,用于禁用所有日志记录。

    2. Log4j的日志级别(按照从低到高排序)为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL。但是Log4j还提供了一个ALL级别,用于启用所有日志记录。

    3. Log4j2的日志级别(按照从低到高排序)为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。Log4j2的日志级别与Log4j大体相同,但是它还添加了一个OFF级别,用于完全禁用日志记录。

    可以看到常见的ERROR、WARN、INFO、DEBUG,这三者都是支持的。 

    看看各自需要引入的jar

    • slf4j + logback: slf4j-api.jar + logback-classic.jar + logback-core.jar
    • slf4j + log4j: slf4j-api.jar + slf4j-log412.jar + log4j.jar
    • slf4j + jul: slf4j-api.jar + slf4j-jdk14.jar
    • 也可以只用slf4j无日志实现:slf4j-api.jar + slf4j-nop.jar

    注意到这里没有log4j2依赖jar的关系,和log4j2配合需要导入log4j2的log4j-api.jar、log4j-core.jar和桥接包log4j-slf4j-impl.jar。

    所谓的桥接包,就是实现StaticLoggerBinder类,用来连接slf4j和日志框架。因为log4j和log4j2刚开始没有StaticLoggerBinder这个类,为了不改变程序结构,只能重新写一个新的jar来实现StaticLoggerBinder。而logback出现slf4j之后,于是在logback本身的jar中实现了StaticLoggerBinder,所以就不需要桥接包。

    按出现顺序逐个分析一下

    Log4j

    Apache Log4j 是一个非常古老的日志框架,并且是多年来最受欢迎的日志框架。 它引入了现代日志框架仍在使用的基本概念,如分层日志级别和记录器。

    2015 年 8 月 5 日,该项目管理委员会宣布 Log4j 1.x 已达到使用寿命。 建议用户使用 Log4j 1 升级到 Apache Log4j 2。

    Logback

    logback 是由 log4j 创始人设计的又一个开源日志组件,作为流行的 log4j 项目的后续版本,从而替代 log4j。

    Logback 的体系结构足够通用,以便在不同情况下应用。 目前,logback 分为三个模块:logback-core,logback-classic和logback-access。

    • logback-core:模块为其他两个模块的基础。
    • logback-classic:模块可以被看做是log4j的改进版本。此外,logback-classic 本身实现了 SLF4J API,因此可以在 logback 和其他日志框架(如 log4j 或 java.util.logging(JUL))之间来回切换。
    • logback-access:模块与 Servlet 容器(如 Tomcat 和 Jetty)集成,以提供 HTTP 访问日志功能。

    Log4j2

    Apache Log4j 2是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。

    与 Logback 一样,Log4j2 提供对 SLF4J 的支持,自动重新加载日志配置,并支持高级过滤选项。 除了这些功能外,它还允许基于 lambda 表达式对日志语句进行延迟评估,为低延迟系统提供异步记录器,并提供无垃圾模式以避免由垃圾收集器操作引起的任何延迟。

    所有这些功能使 Log4j2 成为这三个日志框架中最先进和最快的。

    后面有空在讲讲标签配置的一些差异和=注意事项

     

  • 相关阅读:
    JavaScript的this为什么这么设计
    数据仓库入门介绍
    DPDK基础组件一(mbuf、ring、pktmbuf_pool)
    Python很慢,但它即将变得更快
    高数 |【2020数一真题】部分错题及经典题自用思路整理
    java计算机毕业设计网上拍卖系统源程序+mysql+系统+lw文档+远程调试
    STM32F103在CubeIDE运行FreeRTOS
    指针和数组
    【Nginx】nginx 解决504超时问题
    QT入门10个小demo——连接MySql实现登录模块
  • 原文地址:https://blog.csdn.net/weixin_42206151/article/details/134519807