zoukankan      html  css  js  c++  java
  • Java 日志体系

    Java 日志体系

    《java 日志和 SLF4J 随想》:http://ifeve.com/java-slf4j-think/

    一、常用的日志组件

    名称 jar 描述
    log4j log4j.jar 早期常用日志组件
    log4j2 log4j.log4j-api.log4j-core.jar apache 开发的一款 log4j 的升级产品
    logback logback-core.jar、logback-classic.jar、logback-access.jar 一套日志组件的实现,性能优于 log4j(slf4j阵营)
    java.util.logging jdk jdk1.4 实现
    jcl commons-logging.jar 日志门面,已停止更新
    slf4j slf4j-api.jar 日志门面

    现今,Java 日志领域被划分为两大阵营:Commons Logging 阵营和 SLF4J 阵营,但 SLF4J 的发展趋势更好。

    先说明下日志简称:

    • jdk 自带的 logging -> 简称 jul (java-util-logging)
    • apache commons-logging -> 简称 jcl
    • logback -> slf4j

    二、jcl

    Commons Logging 阵营只支持 log4j、jul、simplelog 三种日志,jul 由 JDK1.4 实现,log4j 是 Apache 的一个早期的项目,simplelog 是 Commons Logging 自己实现的一个简单日志(JDK1.1 时有效)。优先级别为 log4j > jul > simplelog。

    JCL 日志系统

    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- 根据需要引入 log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    

    三、slf4j

    slf4j 官网:https://www.slf4j.org/

    slf4j 日志系统

    3.1 如何在项目中使用 slf4j

    如果要在项目中使用 slf4j,一般需要引入三个 jar 包:一是 slf4j-api.jar 接口;二是具体实现包;三是桥接包。

    jar 包名 作用
    slf4j-log4j12-1.7.13.jar log4j1 桥接器,你需要将log4j.jar加入classpath。
    slf4j-jdk14-1.7.13.jar java.util.logging 的桥接器,JDK原生日志框架。
    slf4j-nop-1.7.13.jar NOP 桥接器,默默丢弃一切日志。
    slf4j-jcl-1.7.13.jar Commons Logging 的桥接器. 这个桥接器将 SLF4j 所有日志委派给 JCL。
    logback-classic-1.0.13.jar(requires logback-core-1.0.13.jar) slf4j 的原生实现,logback 直接实现了 slf4j 的接口,因此使用 slf4j 与 logback 的结合使用也意味更小的内存与计算开销

    如要在项目中使用 log4j2 则需要引入以下 jar 包:

    <!-- slf4j -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!-- log4j2 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.2</version>
    </dependency>
    <!-- log4j2 的桥接包 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.8.2</version>
    </dependency>
    

    3.2 如何桥接遗留的 api

    如果项目是很久之前开发的,如何将其引导到 slf4j 上,这是就需要引入对应的适配包。

    jar 包名 作用
    log4j-over-slf4j-version.jar 将 log4j 重定向到 slf4j
    jcl-over-slf4j-version.jar 将 commos logging 重定向到 slf4j
    jul-to-slf4j-version.jar 将 java.util.logging 重定向到 slf4j

    如 log4j:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>
    

    3.3 注意事项

    同一个日志系统不能现时出现桥接器和适配器,即:

    1. log4j-over-slf4j.jar 和 slf4j-log4j12.jar 不能同时存在
    2. jul-to-slf4j.jar 和 slf4j-jdk14.jar 不能同时存在
    3. jcl-over-slf4j.jar 和 slf4j-jcl.jar 不能同时存在

    参考:

    1. 《Java常用日志框架介绍》:https://www.cnblogs.com/chenhongliang/p/5312517.html
    2. 《log4j2 官网》:http://logging.apache.org/log4j/2.x/manual/migration.html
    3. 《logback 官网》:https://github.com/qos-ch/logback
    4. 《logback的使用和logback.xml详解》:https://www.cnblogs.com/warking/p/5710303.html

    每天用心记录一点点。内容也许不重要,但习惯很重要!

  • 相关阅读:
    selenium+python环境搭建
    TCP/IP 常用协议
    爬虫之scrapy高级部分等相关内容-138
    爬虫之xpath和scrapy的基础使用等相关内容-137
    爬虫之打码平台(超级鹰)破解验证码等相关内容-136
    爬虫之bs4文档树和selenium的基础使用等相关内容-135
    RBAC、xadmin、django缓存、django信号等相关内容-91
    django-restframework-jwt多方式登录、自定义user表及签发token、book表单增删查改等相关内容-90
    爬虫之bs4模块的基础使用等相关内容-134
    django-restframework-jwt认证基础使用等相关内容-89
  • 原文地址:https://www.cnblogs.com/binarylei/p/9828166.html
Copyright © 2011-2022 走看看