点击这里给我发消息 点击这里给我发消息

Apusic AS的Web应用中调用commons-logging

添加时间:2013-12-7
    相关阅读: WEB 程序 框架 系统 项目

    上文描述了如何在Apusic AS的Web应用中调用Log4J,有些朋友会觉得Log4J使用前还需要初始化比较麻烦,还有些朋友会说“怎么你这个Log4J使用起来那么复杂,我们的项目都没有那么过程呀?”,那是因为许多Web应用中是用Java commons-logging(JCL)+Log4J的,如果采用JCL+Log4J就不需要初始化了。

那么为什么有了Log4J又有JCL呢?是因为SUN的JDK 1.4中自带有日志框架,Log4J是Apache提供的日志框架,为了扩展应用的兼容性,保证应用可以无缝切换到不同的日志框架,因此JCL提供的是日志系统的接口,通过给工厂接口提供不同的实现类,从而保证与不同日志框架的兼容。同时,为了保证系统的有效性,还提供了一个非常简单的日志框架实现,以便没有外接其他日志框架时可以使用自带的。

那么为什么JCL+Log4J就不需要初始化了呢?这要从JCL的执行流程说起。当应用执行类似以下代码时:

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

public class LoggingDemo {     private static Log log = LogFactory.getLog(LoggingDemo.class);     // ... } LogFactory.getLog()函数会启动一个搜索过程,找出底层日志记录功能的实现,具体的发现过程在下面列出:

  ⑴ Commons的Logging首先在CLASSPATH中寻找一个commons-logging.properties文件。这个属性文件至少定义org.apache.commons.logging.Log属性,它的值应该是实现Log接口的完整限定名称。

  ⑵ 如果上面的步骤失败,Commons的Logging接着检查系统属性org.apache.commons.logging.Log,以便找到实现Log接口的完整限定名称。属性可以通过服务器启动时参数配置,或者在代码中使用System.setProperty()函数操作,具体可以参考附件。

  ⑶ 如果找不到org.apache.commons.logging.Log系统属性,Logging接着在CLASSPATH中寻找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。log4j本身的属性需要按照框架配置文件定义的方式进行,一般是通过log4j.properties文件正确配置。

  ⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。

  ⑸ 最后,如果上述操作都失败,则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。

了解了以上的过程就会明白为什么JCL+Log4J不再需要初始化,使用JCL+Log4J只需要在WEB-INF/lib下放置commons-logging.jar和log4j.jar包,在WEB-INF/classes下放置log4j.properties和commons-logging.properties(可选)文件,就可以在程序中随意的使用了。

 

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册