JCL 日志门面

JCL( Jakarta Commons Logging ),是 Apache 提供的一个 通用日志 API 。用户可以自由选择第三方的日志组件作为具体实现,像 Log4j 或 JDK 自带的 JUL 。

common-logging 会通过动态查找的机制,在程序运行时自动找出真正使用的日志框架。其内部有一个 Simple logger 的简单实现,但是功能很弱,所以 common-logging 通常都是配合着 Log4j 以及其他日志框架来使用。

使用它的好处就是,代码依赖是 common-logging 而非 Log4j 或 JUL 的 API, 避免了和具体日志框架 API 的直接耦合。也就是面向接口开发,不再依赖具体的实现类,可以根据实际需求,灵活的切换日志框架。统一的 API,统一的配置管理便于项目日志的维护工作。

JCL 有两个基本的抽象类:Log(日志记录器)、LogFactory(日志工厂,负责创建 Log 实例)。

导入依赖:


        commons-logging
        commons-logging
        1.2

        junit
        junit
        4.12

代码示例:

package com.jcl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;

public class JclTest {
    @Test
    public void test01() {
        // JCL使用原则:有Log4j则优先使用,没有任何第三方日志框架则默认使用JUL
        Log log = LogFactory.getLog(JclTest.class);
        log.info("info信息");
    }
}

运行结果: 可以看出使用了 JDK 的 JUL 日志框架。

七月 01, 2022 7:52:12 上午 com.jcl.JclTest test01
信息: info信息

添加依赖:


    log4j
    log4j
    1.2.17

创建配置: log4j.properties 文件

#配置日志级别,引用控制器
log4j.rootLogger=INFO,console
#配置控制台输出器
log4j.appender.console=org.apache.log4j.ConsoleAppender
#配置自定义格式器
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#配置自定义转换模式
log4j.appender.console.layout.conversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5p] [%t] [%-4rms] [%c#%M-%L] %m%n

再次运行: 可以看出使用了 Log4j 日志框架。

[2022-07-01 07:53:33.453] [INFO ] [main] [0   ms] [com.jcl.JclTest#test01-13] info信息

Original: https://www.cnblogs.com/bybeiya/p/16439432.html
Author: 北涯
Title: JCL 日志门面

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684250/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Kubernetes 高可用集群修改 Master IP 地址的正确姿势

    经过实际验证的修改 master IP 地址的操作步骤,千真万确,错一罚十,kubernetes 版本是 v1.20.2。 折腾过程中所走的弯路是有4个ssl证书(apiserve…

    技术杂谈 2023年5月30日
    096
  • Spring Cloud Alibaba分布式事务组件 seata 详解(小白都能看懂)

    一,什么是事务(本地事务)? 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。 _而一个逻辑…

    技术杂谈 2023年7月11日
    080
  • MySQL数据库-数据表(三)

    SELECT定义: SQL的SELECT语句可以实现对表的选择、投影及连接操作。即SELECT语句可以从一个或多个表中根据用户的需要从数据库中选出匹配的行和列,结果通常是生成一个临…

    技术杂谈 2023年6月21日
    0125
  • 搭建eureka服务注册中心,单机版

    单独搭建的 搭建springboot项目 (1)pom文件 <?xml version="1.0" encoding="UTF-8"?…

    技术杂谈 2023年7月23日
    074
  • HTTP状态管理机制之Cookie

    一、cookie 起源 cookie 最早是网景公司的雇员 Lou Montulli 在1993年3月发明,后被 W3C 采纳,目前 cookie 已经成为标准,所有的主流浏览器如…

    技术杂谈 2023年6月1日
    094
  • 微信JSSDK 扫描二维码

    php;gutter:true; GetSignPackage(); $news = array("Title" =>"方倍", &q…

    技术杂谈 2023年5月31日
    099
  • Typora 又提示过期了

    最近使用Typora ,收费以后一直使用的Beta版本,今天它又提示我过期了; 看了网络上的教程,都过于麻烦,还是购买正版 支持一下吧 节省一下时间,毕竟开发也要成本。 Origi…

    技术杂谈 2023年5月31日
    0105
  • Object.observe将不加入到ES7

    先请看 Object.observe 的 API javascript;gutter:true; Object.observe(obj, callback[, acceptList…

    技术杂谈 2023年6月1日
    093
  • 下载资源一定要小心

    下载了一本电子书,发现不简单; 下载 解压 压缩包里面的 下载器 对于这种 下载器 一般需要谨慎!!! 国内的一般会各种 捆绑 恶意 软件 套装 国外的一般后 捆绑各种 勒索 病毒…

    技术杂谈 2023年5月31日
    0104
  • C++11实现的数据库连接池

    它什么是? 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;类似的还有线程池。 为什么要用? 一个数据库连接对象均对应…

    技术杂谈 2023年7月24日
    086
  • T480拆机加内存,换高清屏幕—全攻略

    Thinkpad T480乞丐版,先吐槽:我买电脑用于商务,不打游戏,平时做做PPT,WORD,偶尔看看电影,所以需求不高。原来对T系列印象是为工程机,为经典和均衡,结实稳定,E系…

    技术杂谈 2023年5月31日
    0123
  • PreparedStatement报错问题

    package com.lian.lesson3; import com.lian.lesson2.utils.JDBCUtils; import java.sql.*; publ…

    技术杂谈 2023年6月21日
    093
  • paas saas iaas

    paas saas iaas IaaS-基础设施即服务IaaS是基础设施即服务。英文全称是Infrastructure as a server。 概念:需要帮助客户搭建好运行服务的…

    技术杂谈 2023年5月31日
    061
  • 设计一个回调要注意哪些事情

    设计一个回调要注意哪些事情 回调是我们在设计系统的时候经常会使用到的, A服务调用B服务, 但是如果B服务提供的是一个较长时间的、异步的接口, 那么我们就会想到使用一个回调, 让B…

    技术杂谈 2023年6月1日
    0100
  • Vue系列—源码调试(二)

    我们要对Vue源码进行分析,首先我们需要能够对vue源码进行调式(这里的源码调式是ES6版本的,不是打包后的代码),因此首先我们要去官方github上克隆一份vue项目下来,如下具…

    技术杂谈 2023年6月1日
    077
  • mongo笔记

    获取stats from pymongo import MongoClient client = MongoClient() db = client.test print coll…

    技术杂谈 2023年7月11日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球