一、commons-logging简介
commons-logging是为那些需要建立在不同环境下使用不同日志架构的组件或库的开发者创建的,其中包括 Apache Log4j以及Java log的日志架构。把日志信息commons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构。
commons-logging提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密耦合,可以自动选择适当的日志实现系统,甚至不需要配置。
commons-logging实现自动选择日志实现系统的步骤如下:
1) 首先在classpath下寻找自己的配置文件commons-logging.properties
,如果找到,则使用其中定义的Log实现类;
其内容如下:
org.apache.commons.logging.log = 具体的实现类
比如,使用log4j做为日志实现类,则commons-logging.properties
文件的内容为:
org.apache.commons.logging.log=org.apache.commons.logging.impl.Log4JLogger
当然,在使用Log4j作为日志工具的时候,commons-logging.properties的配置可以不要。但是需要有log4j的配置文件log4j.properties。
2) 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量:org.apache.commons.logging.log,找到则使用其定义的Log实现类。
如果在Tomact中可以建立一个名为CATALINA_OPTS 的环境变量 。
如果使用commons-logging自己的日志实现类,则该环境变量的值为:
- Dorg.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog - Dorg.apache.commons.logging.simpl
3) 否则,查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;
4) 否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);
5) 否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;
(具体内容请参考官方文档:http://commons.apache.org/logging/commons-logging-1.1.1/guide.html#Configuration
)
可见,commons-logging总是能找到一个日志实现类,并且尽可能找到一个“最合适”的日志实现类。
commons-logging对编程者和Log4j都非常友好。
为了简化配置commons-logging,一般不使用commons-logging的配置文件,也不设置与commons-logging相关的系
统环境变量,而只需将Log4j的Jar包放置到classpash中就可以了。这样就很简单地完成了commons-logging与Log4j的融
合。如果不想用Log4j,只需将classpath中的Log4j的Jar包删除即可。
而目前,apache通用日志工具commons-logging和Log4j已经成为Java日志的标准工具。
二、commons-logging的主要api
commons-logging的使用很简单,一般只要使用到两个接口:
org.apache.commons.logging.Log
以及org.apache.commons.logging.LogFactory
下面的语句就可以得到一个Log实例:
private static Log log = LogFactory.getLog(YouClassName. class );
LogFactory.getLog()方法的参数使用的是当前类的class,这是目前被普通认为的最好的方式。
一般常用的Log类的方法如下:
log.debug( "debug message" ); //输出调试级别的日志信息
log.info("info message"); //输出信息级别的日志信息
log.warn("warn message"); //输出警告级别的日志信息
log.warn("error message"); //输出错误级别的日志信息
log.fatal("fatal message"); //输出致命错误级别的日志信息
根据不同的性质,日志信息通常被分成不同的级别,从低到高依次是:
“调试(DEBUG)”<“信息(INFO)”<“警告(WARN)”<“错误(ERROR)”<“致命错误(FATAL)”
。
把日志信息分成不同的级别,是为了方便更好的控制它。
比如,通过Log4j的配置文件,可以设置“输出‘调试’及以上级别的日志信
息”(即“调试”“信息”“警告”“错误”“致命错误”),这对项目开发人员可能是有用的;我们还可以设置“输出“警告”及以上级别的日志信息”(即“警
告”“错误”“致命错误”),这对项目最终用户可能是有用的。
仅从字面上理解,也可以大致得出结论:最常用的应该是debug()和info();而warn()、error()、
fatal()仅在相应事件发生后才使用。
上面所介绍的方法是目前被普通应用的,可以说是被标准化了的方法。
commons-logging的详细javadoc请详见:http://commons.apache.org/logging/commons-logging-1.1.1/apidocs/index.html
三、log4j和commons-logging结合
log4j和commons-logging的结合很容易,在项目的classpath中加入log4j的jar包,同时在项目的文件中必须要有log4j.properties文件存在。这样在项目运行的时候,commons-logging会查找classpath中是否存在log4j的jar包,如果有,并且存在log4j.properties文件。则commons-logging会自动使用log4j来实现日志系统。
log4j的简介及使用会在下一章中说明。
注:本文参考了以下几篇网友的文章:
http://www.blogjava.net/liuwentao253/archive/2006/08/03/61517.html
http://lavasoft.blog.51cto.com/62575/26134
分享到:
相关推荐
Commons Logging 是 Apache 的一个通用日志接口,它提供了一个简单的API,使得开发者能够在不关心具体日志实现的情况下,切换不同的日志框架,如Log4j、Java内置的日志系统等。Commons Logging 1.2 版本的特点有: ...
**commons-logging.jar** 是Apache Commons项目的一部分,它提供了一个抽象层,允许应用程序使用多种不同的日志框架,如log4j、Java内置的日志API(java.util.logging)、或者其他的日志实现。这个库的核心理念是...
`commons-logging`会自动检测并选择可用的日志实现,优先级通常是:已配置的`commons-logging.properties`、系统环境变量`org.apache.commons.logging.Log`、`log4j`库、JDK内置日志、最后是`commons-logging`自带的...
Apache Commons Logging和Log4j是两个广泛使用的日志框架,本指南将深入讲解如何将它们结合使用,为你的Java应用程序提供强大的日志功能。 首先,让我们了解Apache Commons Logging。它是Apache软件基金会的一个...
总结来说,`commons-logging`和`Log4j`的关系可以比喻为“接口”和“实现”的关系,前者提供了一种标准的日志记录接口,后者是这些接口的一个具体实现,两者结合使用能够实现灵活的日志管理和调试。在Java开发中,...
Commons Logging 提供了一组接口和辅助类,使得应用程序可以透明地使用任何兼容的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者简单的控制台输出。这个库的主要优点是灵活性和可插拔性,开发者...
用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的...
这是一个轻量级的日志记录抽象层,它允许应用程序开发者选择他们偏好的日志框架,如Log4j、Java内置的java.util.logging,或者任何其他兼容的实现。 Commons Logging 提供了一致的API,使得在不同的日志实现之间切换...
2. 配置日志实现,可以通过设置`java.util.logging.config.file`、`log4j.configuration`等系统属性,或者在类路径下放置适当的配置文件(如log4j.properties)。 3. 在代码中获取并使用Logger,如`Logger logger = ...
Apache Commons-logging 提供了一个日志记录接口,允许开发者使用不同的日志实现工具,如 Log4J、Avalon LogKit、JDK 1.4 等。该接口提供了一个简单的日志操作抽象,允许开发者使用不同的日志实现工具。 2. 快速...
Apache Commons Logging,简称为Commons Logging,是Apache软件基金会开发的一个开源日志框架,主要用于提供一个统一的日志API,让开发者能够在不改变代码的情况下,自由切换不同的日志实现库,如Log4j、Java内置的...
在项目中,我们通常会同时看到`log4j-1.2.14.jar`和`commons-logging-1.1.jar`这两个文件,这表明项目使用了Commons Logging作为日志接口,并将Log4j作为实际的日志实现。为了使两者协同工作,需要确保在项目的类...
"commons-logging.jar" 和 "log4j.jar" 是两个广泛使用的Java日志框架,它们在Java应用开发中扮演着至关重要的角色。 **commons-logging.jar** 是Apache Commons Logging库,它提供了一个统一的日志接口,允许...
这个库允许开发者选择底层的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者其他第三方日志系统,而无需修改代码。它的核心概念是提供一种抽象,使得应用代码与特定的日志实现解耦,从而增强了灵活...
Apache Commons Logging 提供了一个API,开发人员可以使用这个API编写日志语句,然后在运行时通过配置来决定实际的日志实现,如Log4j、java.util.logging(也称为JUL)或简单的控制台日志。 标题中的"apache-...
在提供的压缩文件`log4j与commenlog`中,可能包含了Log4j的相关配置文件和Commons Logging的JAR包,这使得开发者可以直接在项目中使用这两个库。通过这样的集成,开发者可以轻松地实现日志记录,同时保持系统的可...
在Hibernate中,`commons-logging`被用作日志服务的接口,使得Hibernate能够适配多种日志系统,如Log4j、Java内置的日志框架java.util.logging,或者简单的控制台输出。这种灵活性让开发者可以根据项目需求选择最...
Spring 框架广泛使用 Commons Logging 进行日志记录,因为它允许 Spring 与多种日志实现(如 log4j、java.util.logging 或 logback)无缝集成。 描述中提到的 "java spring 中打印信息的jar包" 指的是 Commons ...
Apache Commons Logging,简称为Commons Logging,是Apache软件基金会开发的一个开源日志框架,主要用于提供一个统一的日志接口,使得Java应用程序可以在不改变代码的情况下,自由地切换不同的日志实现库,如Log4j、...