引言:
为什么去使用log4j 我已经在前面的学习笔记之一已经谈过了,基本的使用也已经去涉及到了。
而同样在apache下面的,还有一个commons-logging , 这里面又有什么玄机呢?下面就来说说两者的区别和联系。
一、log4j强大的日志处理 之上 commons-logging能为我们做什么?
Log4j的强大也可以从它的普及之广可以看出,多少程序员对它的推崇,而它的处理能力确实也深受爱戴。而在这里面commons-logging给我们带来的更是Log4j的封装。
1、commons-logging能把日志处理的log4j或其他的处理工具与项目进行解耦,解耦带来的好处,相信大家都知道,它便于我们更新技术,更改使用的方式。而不去涉及太多的改到。避免过度的紧密结合带来的许多问题
2、commons-logging可以自动的选择日志实现的系统,它甚至不需要配置
总结区别
:Log4j是一个强大的日志实现的系统,而commons-logging是一个十分便利的接口,对Log4j的优势的封装,使日志实现系统与项目做到解耦的效果。
ps: commons-logging 不仅仅对Log4j的封装,还有着其他的日志实现系统,包括它自身简单的日志实现系统
二、commons-logging 与 log4j 的结合使用
简单的实例应用:
- 找到commons-logging的jar包 commons-logging-1.1.1.jar
并导入
p.s:如果是maven工程的话,可直接在pom.xml中直接加入
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
- 这里面回顾下学习笔记之1 的那个例子,做一个小小的改动
//创建一个私有的日志对象
//private Logger log = Logger.getLogger(TestLog4j.class);
private static Log log = LogFactory.getLog(TestLog4j.class);
将原有的创建日志记录注释,改成上面的方式。
引用的类分别为
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
运行测试,显示正常。就这样引用commons-logging的方式就这样完成了。
这里面更可以注释掉
//加载配置文件
//PropertyConfigurator.configure("D:\\log4j.properties");
只要把
log4j.properties
这个配置文件放在classpath中(即项目目录下的bin文件夹中)
运行,成功显示。
三、commons-logging如何查找对应的日志实现系统
上面的例子中,说明了commons-logging与Log4j相结合的方式。但在这里commons-logging如何判断用Log4j来做日志实现的系统呢?
而这一点正是commons-logging的友好之处。commons-logging封装了Log4j,JDK,及自身拥有的SimpleLog;
这里的运行流程为:
1) 首先在 classpath 下寻找自己的配置文件 commons-logging.properties,如果找到,则使用其中定义的 Log 实现类;
2) 如果找不到 commons-logging.properties 文件,则在查找是否已定义系统环境变量有着org.apache.commons.logging.Log,找到则使用其定义的 Log 实现类;
3) 否则,查看 classpath 中是否有 Log4j 的包,如果发现,则自动使用 Log4j 作为日志实现类;
4) 否则,使用 JDK 自身的日志实现类(JDK1.4 以后才有日志实现类);
5) 否则,使用 commons-logging 自己提供的一个简单的日志实现类 SimpleLog;
(对官方文档的理解,具体与官方文档为准)
在这里,它的友好之处也就体现出来了。
1、可以不需要有配置文件,指的是commons-logging.properties
2、会自动查找最适合的日志实现方式,如Log4j,还是需log4j.properties的,不要和第一条混淆了。
3、在最坏的情况下,也有着自身的日志实现类SimpleLog来做日志处理。
END
分享到:
相关推荐
《Commons-Logging + Log4j 入门...总之,Commons-Logging与Log4j的组合提供了强大且灵活的日志解决方案,能够满足各种规模和类型的Java应用的需求。正确理解和使用这两个工具,将大大提升你的开发效率和问题排查能力。
`commons-logging`会自动检测并选择可用的日志实现,优先级通常是:已配置的`commons-logging.properties`、系统环境变量`org.apache.commons.logging.Log`、`log4j`库、JDK内置日志、最后是`commons-logging`自带的...
Apache Log4j 2.3 和 Commons Logging 1.2 是两个在Java Web开发中广泛使用的日志处理库。这两个库对于记录应用程序的运行时信息、调试错误和监控系统状态至关重要。 **Apache Log4j 2.3** Log4j 是 Apache 组织...
标题中的“commons-logging”和“Log4j”是两个在Java编程中广泛使用的日志处理框架。它们在日志管理领域中各自扮演着不同的角色,而它们之间的关系则涉及到日志实现的抽象与具体实现的层次问题。 首先,让我们了解...
由于commons-logging的存在,你无需直接使用log4j的类,而是通过`java.util.logging.Logger`的接口来实现日志记录,commons-logging会自动找到log4j作为底层实现。 总之,log4j.jar和commons-logging.jar是Java开发...
Commons Logging 提供了一组接口和辅助类,使得应用程序可以透明地使用任何兼容的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者简单的控制台输出。这个库的主要优点是灵活性和可插拔性,开发者...
用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的...
在标题"commons-logging-1.2_commonslogging_"中提到的"commons-logging-1.2.jar"就是这个库的1.2版本,它是Spring框架中常用的一个依赖,用于处理日志记录。 Spring框架广泛使用Commons Logging作为其默认的日志...
1. **安装与配置**:介绍如何在项目中引入commons-logging和log4j的依赖,并设置相应的配置文件,如log4j.properties或log4j.xml。 2. **使用API**:讲解如何在代码中通过commons-logging接口来调用log4j的记录方法...
log4j日志包 log4j.jar\commons-logging-1.1.1.jar private static final Log log = LogFactory.getLog(xxxxxx.class); 下载后解压就能得到这两个包
Commons-loggin的目的是为“所有的Java日志实现”提供一个统一的接口,它自身的日志功能平常弱(只有一个简单的SimpleLog?...另外一个我能想到的“同时使用commons-logging和Log4j”的原因是,简化使用和配置
"commons-logging.jar" 和 "log4j.jar" 是两个广泛使用的Java日志框架,它们在Java应用开发中扮演着至关重要的角色。 **commons-logging.jar** 是Apache Commons Logging库,它提供了一个统一的日志接口,允许...
在项目中,我们通常会同时看到`log4j-1.2.14.jar`和`commons-logging-1.1.jar`这两个文件,这表明项目使用了Commons Logging作为日志接口,并将Log4j作为实际的日志实现。为了使两者协同工作,需要确保在项目的类...
这个库允许开发者选择底层的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者其他第三方日志系统,而无需修改代码。它的核心概念是提供一种抽象,使得应用代码与特定的日志实现解耦,从而增强了灵活...
Apache Commons Logging,简称为Commons Logging,是Apache软件基金会开发的一个开源日志框架,主要用于提供一个统一的日志API,让开发者能够在不改变代码的情况下,自由切换不同的日志实现库,如Log4j、Java内置的...
Spring 框架广泛使用 Commons Logging 进行日志记录,因为它允许 Spring 与多种日志实现(如 log4j、java.util.logging 或 logback)无缝集成。 描述中提到的 "java spring 中打印信息的jar包" 指的是 Commons ...
在提供的压缩文件`log4j与commenlog`中,可能包含了Log4j的相关配置文件和Commons Logging的JAR包,这使得开发者可以直接在项目中使用这两个库。通过这样的集成,开发者可以轻松地实现日志记录,同时保持系统的可...
开发工具 commons-logging-1.2开发工具 commons-logging-1.2开发工具 commons-logging-1.2开发工具 commons-logging-1.2开发工具 commons-logging-1.2开发工具 commons-logging-1.2开发工具 commons-logging-1.2开发...
在Hibernate中,`commons-logging`被用作日志服务的接口,使得Hibernate能够适配多种日志系统,如Log4j、Java内置的日志框架java.util.logging,或者简单的控制台输出。这种灵活性让开发者可以根据项目需求选择最...