`
zhuyuanxiang
  • 浏览: 130664 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

阅读更多

上文描述了如何在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(可选)文件,就可以在程序中随意的使用了。

为了方便大家了解详细情况,附件为Apusic下的一个使用案例。同样是个Servlet文件,只需要输入对Servlet进行访问就可以看到日志输出的全过程。

1
0
分享到:
评论

相关推荐

    金蝶Apusic V10 应用服务器用户管理手册

    金蝶Apusic应用服务器是企业级的中间件产品,主要用于构建和运行复杂的企业应用程序。它提供了稳定、高效、安全的运行环境,适用于分布式系统,并具备良好的可扩展性和伸缩性。Apusic V10版本进一步优化了这些特性,...

    AAS-V10.zip

    标题"AAS-V10.zip"和描述中的"apusic"关键词指向了Apusic应用服务器,这是一款由中国万网(现阿里云)开发的企业级Java应用服务器,它为各种企业应用程序提供了一个运行平台。Apusic应用服务器遵循Java EE(以前称为...

    AAS-V10-sp2.zip

    2. 容器化部署:AAS-V10-sp2强化了对Docker容器的支持,使得用户可以更方便地将应用程序以容器的形式进行部署和管理,简化了运维流程。 3. 高可用性:通过引入集群和负载均衡功能,AAS-V10-sp2可以实现应用服务的高...

    金蝶Apusic应用服务器 V10企业版 用户手册+技术白皮书+调优手册

    金蝶Apusic应用服务器V10企业版是金蝶公司推出的一款强大且高效的企业级中间件产品,主要用于构建和运行企业级的Web应用程序和服务。该版本的用户手册、技术白皮书以及调优手册提供了全面的技术指导和优化策略,帮助...

    Apusic密码修改指引

    3. **登录Apusic控制台检查部署的应用,除EAS、EASWeb、fileserver、jportal等已知应用外,是否有其他未知应用部署。** **注意事项:** - 对于发现的可疑文件或应用,应及时进行隔离或删除,并进一步调查来源。 ##...

    AAS-V9.0用户手册.pdf

    金蝶Apusic应用服务器V9.0是金蝶中间件推出的一款企业级Java应用服务器产品,支持Java EE 6规范,提供了包括Web容器、EJB容器、企业级Java Bean等服务在内的丰富功能。本手册针对金蝶Apusic应用服务器V9.0版本的用户...

    使用Jprofiler监控Apusic应用服务器.pdf

    - **配置Apusic应用服务器**: 在Apusic的启动脚本中,须添加特定的JAVA启动参数,以支持JProfiler的监控功能。具体而言,这涉及修改`APUSIC_HOME/bin`目录下的`startapusic.cmd`文件,引入必要的JProfiler连接指令。...

    Apusic--license

    金蝶中间件(Apusic)--license

    管理Apusic Web服务器

    Apusic Web 服务器是 Apusic 应用服务器中内置的一个高效、安全、可靠的 Web 服务器,提供完整的 Web 服务器的功能,使 Apusic 应用服务器在提供对静态页面和图形的同时,提供对 JSP、Servlet 的高效服务。Apusic ...

    金蝶中间件Apusic Eclipse/MyEclipse插件 all-plugins

    通过安装金蝶中间件Apusic插件,开发者可以在Eclipse或MyEclipse中直接配置、管理和测试Apusic应用服务器上的应用,简化了开发流程,提高了开发效率。 压缩包中的四个文件分别对应不同的使用场景: 1. **AASv9-...

    Linux环境下使用Apache搭建Apusic应用服务器集群

    2. **解压安装包**:执行`unzip ./Apusic-AS-6.0-OS-Independent_sp1-100903.zip –d /opt/Apusic6.0/`,解压至指定目录。 3. **赋予目录权限**:使用`chmod -R 777 Apusic6.0/`命令赋予目录执行权限。 4. **配置...

    金蝶中间件Apusic-plugins.zip

    金蝶中间件Apusic-plugins.zip是一个包含了一系列与金蝶Apusic中间件相关的开发插件的压缩包,主要用于帮助开发者在Eclipse或MyEclipse环境中进行应用程序的调试和开发。Apusic中间件是金蝶公司推出的一款企业级应用...

    金蝶服务工作单标准模板

    从给定的信息来看,我们可以将金蝶服务工作单标准模板中的关键知识点分为以下几个部分: ### 一、基本信息 #### 标题与描述解读 - **标题**:“金蝶服务工作单标准模板”,这一标题直接指出了文档的主要内容,即一...

    apusic数据库连接攻略

    在apusic文件中,程序调用是指在应用程序中使用数据源的方式。例如,在上面的示例代码中,程序调用是指在testmysql.jsp文件中使用数据源的方式。 3.1 获取连接 在apusic文件中,获取连接是指在应用程序中获取数据...

    AAS-V10.0用户手册.pdf

    金蝶中间件Apusic应用服务器是一款由金蝶软件开发的Java应用服务器软件,它提供了Java EE的多种技术实现,用于部署和管理Java应用程序。Apusic V10.0版本是对该应用服务器的一个重要更新,它包含了对系统管理、集群...

    Apusic应用服务器6.0使用手册(CHM格式)

    金蝶Apusic应用服务器6.0是一款标准、安全、高效、集成并且具有丰富功能的企业级应用服务器(Enterprise Application Server),它用于实现基于SOA的企业应用和服务,为企业应用和服务提供坚不可摧的基础架构支撑。...

Global site tag (gtag.js) - Google Analytics