0
点赞
收藏
分享

微信扫一扫

JCL基本使用


文章目录

  • ​​1. JCL 简介​​
  • ​​2. JCL 入门​​
  • ​​3. JCL原理​​

1. JCL 简介

  • 全称为Jakarta Commons Logging,是Apache提供的一个通用日志API。
  • 它是为 "所有的Java日志实现"提供一个统一的接口,它自身也提供一个日志的实现,但是功能非常常弱(SimpleLog)。所以一般不会单独使用它。它允许开发人员使用不同的具体日志实现工具: Log4j,Jdk自带的日志(JUL)
  • JCL 有两个基本的抽象类:​​Log​​​(基本记录器)和​​LogFactory​​(负责创建Log实例)
  • JCL基本使用_apache

2. JCL 入门

  • 添加依赖

<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

</dependencies>

  • log4j.properties

log4j.rootLogger = trace,console
log4j.appender.console = org.apache.log4j.ConsoleAppender
# 指定消息格式 layout
log4j.appender.console.layout = org.apache.log4j.PatternLayout
# 指定消息格式的内容
log4j.appender.console.layout.conversionPattern = [%-10p]%r %l %d{yyyy-MM-dd HH:mm:ss.SSS}

@Test
public void testQuick() throws Exception {
// 获取 log 日志记录器对象
Log log = LogFactory.getLog(JCLTest.class);
// 日志记录输出
log.info("hello jcl");

}

JCL基本使用_JCL基本使用_02

  • 为什么要使用日志门面:
  1. 面向接口开发,不再依赖具体的实现类,减少代码的耦合
  2. 项目通过导入不同的日志实现类,可以灵活的切换日志框架
  3. 统一API,方便开发者学习和使用
  4. 统一配置便于项目日志的管理

3. JCL原理

  1. 通过LogFactory动态加载Log实现类
  2. JCL基本使用_apache_03

  3. 日志门面支持的日志实现数组

private static final String[] classesToDiscover =
new String[]{"org.apache.commons.logging.impl.Log4JLogger",
"org.apache.commons.logging.impl.Jdk14Logger",
"org.apache.commons.logging.impl.Jdk13LumberjackLogger",
"org.apache.commons.logging.impl.SimpleLog"};

  1. 获取具体的日志实现

for(int i = 0; i < classesToDiscover.length && result == null; ++i) {
result = this.createLogFromClass(classesToDiscover[i], logCategory,true);
}


举报

相关推荐

0 条评论