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/585893/

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

(0)

大家都在看

  • shell相关知识1

    组命令,就是将多个命令划分为一组,或者看成一个整体。 用法区别 Shell 组命令的写法有两种: { command1; command2;. . .; }(command1; c…

    Linux 2023年5月28日
    089
  • HTS恢复检查脚本

    #!/bin/bash #program:HTS-A数据库和插件检查 #author:sundz #version 20220531 v1 创建脚本 生成sql的表和字段汇总;ab…

    Linux 2023年6月7日
    0105
  • 函数调用栈

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这个分栏我们开始学习PWN,当然PWN也是自己的兴趣爱好,所以可能博客更新…

    Linux 2023年6月13日
    0127
  • 一文说清OpenCL框架

    背景 Read the fucking official documents! –By 鲁迅 A picture is worth a thousand words. …

    Linux 2023年6月8日
    0117
  • 安装win10和ubuntu双系统

    2019-06-22 ​ 最近找了一份新的工作,要用到linux,由于之前基本上没有接触过这方面的东西,所以今天捣鼓一下,安装win10和linux双系统,办公研发双不误。如果在安…

    Linux 2023年6月14日
    0113
  • Django自带序列化组件;分页器

    django自带的序列化组件 代码实现序列化 models.py class User(models.Model): name = models.CharField(max_len…

    Linux 2023年6月7日
    0103
  • dockerfile

    基础结构 指令 from label maintainer run cmd export env add copy entrypoint volume user workdir o…

    Linux 2023年6月7日
    091
  • docker:nginx+confd动态生成配置

    docker:nginx+confd动态生成配置当我们项目越来越多时手动去服务器修改nginx配置是一件很麻烦而且可能出错的事情。我们可以通过 nginx+confd+&#…

    Linux 2023年6月13日
    082
  • 数据库常用函数

    一、数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e(自然…

    Linux 2023年6月13日
    0114
  • 应用配置管理,基础原理分析

    工程可以有点小乱,但配置不能含糊; 一、配置架构 在微服务的代码工程中,配置管理是一项复杂的事情,即需要做好各个环境的配置隔离措施,还需要确保生产环境的配置安全;如果划分的微服务足…

    Linux 2023年6月14日
    0115
  • shell bash-shell

    bash shell中的命令替换,cmd或者$(cmd)。 bash shell中的变量赋值,直接name = var; ( bash中的变量赋值不能中间有空格) 变量引用时,$n…

    Linux 2023年5月28日
    0102
  • 让Mac界面和Windows界面在Laxcus集群操作系统上合体

    如果一套操作系统,同时拥有苹果Mac风格的图形桌面,和微软Windows风格的图形桌面,你会是一种什么样的体验? 最近,我们公司的GUI研发团队完成了这项技术突破,在持续不断地技术…

    Linux 2023年6月6日
    0113
  • Spring事务(四)-事务隔离级别

    Spring @Transactional注解isolation属性 @Transactional注解通过isolation属性设置事务隔离级别。如下: @Transactiona…

    Linux 2023年6月6日
    075
  • ssh remote forward 监听 0.0.0.0 端口;How to make SSH remote port forward that listens 0.0.0.0

    今天使用ssh转发内网服务的时候,发现remote forward 转发到远程,监听的端口都是localhost。 之前还没发现这种情况,因为都是在所转发的目的主机使用服务。今天,…

    Linux 2023年5月27日
    0111
  • MySQL日志管理之二进制日志

    二进制日志采用二进制格式(01)来存储日志信息(导致数据发生变化的SQL语句),二进制日志记录整个数据库的修改过程。 MySQL的二进制日志主要就是起一个备份的功能。二进制日志≈备…

    Linux 2023年6月7日
    0104
  • Redis主从复制、哨兵、Cluster三种模式

    Redis作为缓存的高效中间件,在我们日常的开发中被频繁的使用,今天就来说一说Redis的四种模式,分别是 「单机版、主从复制、哨兵、以及集群模式」。 可能,在一般公司的程序员使用…

    Linux 2023年5月28日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球