中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > Workplace
IBM Workplace 应用程序开发中的日志管理与分析
作者:王 立,俞 泉 时间:2006-08-27 03:30 出处:IBM 责编:月夜寒箫
              摘要:IBM Workplace 应用程序开发中的日志管理与分析
IBM Workplace 是功能强大的企业级协作应用平台,是构建在 IBM 中间件产品之上的协作特性和服务的集合,通过为用户提供高性能、基于角色的工作环境,从而大大提高用户的工作效率。完善的日志管理是开发良好的 IBM Workplace 应用程序中必不可少的一部分。本文介绍了目前常见的几种日志实现,详细阐述了如何基于 JRas 日志框架在 IBM Workplace 应用程序中添加完善有效的日志管理功能,最后描述了如何在 IBM Workplace 应用程序中进行日志分析。

IBM Workplace 是功能强大的企业级协作应用平台,是构建在 IBM 中间件产品之上的协作特性和服务的集合,通过为用户提供高性能、基于角色的工作环境,从而大大提高用户的工作效率。有关IBM Workplace的更多信息,请访问 IBM Workplace 主页。

几乎所有一定规模的应用程序都具有日志管理和分析功能,软件开发实践证明日志管理和分析是软件开发周期中的重要组成部分。开发健壮的 IBM Workplace 应用程序,同样离不开完善的日志开发部分,本文在比较目前常见的日志实现的基础上,分析了 IBM Workplace 中采用的日志实现,阐述了在 IBM Workplace 应用程序开发中如何管理与分析日志,并提出了若干最佳实践。

本文假定您是一位应用程序开发人员,并熟悉 IBM Workplace 产品。

日志的目的

日志的输出包含应用程序运行的确切上下文,提供日志是开发良好应用程序必不可少的一个环节。完善的日志管理有三个主要的目的,即:

1) 系统开发期间,可帮助开发人员调试应用程序;

2) 系统运行期间,可帮助管理人员维护、优化系统配置,使之高效安全运行;

3) 此外,丰富的日志记录还可帮助系统所属单位进行审计、评估等工作。





回页首


常见的日志实现及其比较

目前常见的基于 Java 的日志实现有 Apache Log4j、Jakarta commons logging、Java Logging APIs 包和 Apache Excalibur LogKit 等。这些日志实现的介绍如下:

Apache Log4j

Log4j 最早可追溯至 1996 年初的 EU SEMPER(欧洲安全电子市场)项目,经过数次优化和改进,该 API 曾作为 IBM alphaWorks 的一个项目按 IBM 公共许可证分发,由开放源码权威机构认证。现在,Log4j 已经成为 Apache Logging Service 的项目之一,在 Apache Software License 下分发。有关 Apache Log4j 的更多信息,请访问 Apache Log4j 的主页,或 IBM developerWorks 文章:Log4j delivers control over logging

Jakarta commons logging

Jakarta commons logging (JCL) 是 Apache Jakarta 项目的 commons 子项目的一个组件,其是应用程序和底层的具体日志实现之间的接口。基于 JCL 的统一接口,开发人员可以选择不同的日志实现作为底层的日志基础,而不影响上层的应用程序。同时,JCL 中也默认提供了两个基本的简单日志实现:NoOpLog 和 SimpleLog。如果没有指定底层的日志实现类,应用程序将默认调用 SimpleLog。有关 Jakarta commons logging 的更多信息,请访问 Jakarta commons logging 的主页。

Java Logging APIs

从 J2SE 1.4 开始,Java 2 SDK 中开始提供了日志功能,包含在 java.util.logging 包中。有关 Java Logging APIs 的更多信息,请查阅Java 2 JDK 文档或 Java Logging APIs的主页。

Apache Excalibur LogKit

LogKit 最早曾是 Apache Avalon 项目的组成部分,随着项目的发展与成熟,Avalon 被拆分为多个项目。LogKit 被归入其中一个分支-Apache Excalibur 项目中。有关Apache Excalibur LogKit的更多信息,请访问 Apache Excalibur LogKit 的主页。

常见日志实现的比较

以上四种常见的日志实现各有所长,在实际开发过程中,需要分析应用程序的具体情况,选择适合项目开发的日志实现。本文通过分析 Apache Log4j、Jakarta commons logging、Java Logging APIs 和 Apache Excalibur LogKit 的优缺点,列举了一些常用的开发实践经验。

1) 因为多年的发展和改进,Apache Log4j 具有完善的功能和丰富的特性,也成为了基于 Java 的日志实现框架的事实标准。但由于 Log4j 是 Apache 开放源代码项目,所以,Apache Log4j 不太适合项目开发对开源库的使用有一定限制的情况。

2) JCL 为所有底层的日志实现提供了一个统一的接口,但其自身实现的日志功能较弱(只有简单的 NoOpLog 和 SimpleLog),所以通常需要和其他具体的日志实现结合使用。JCL 适合项目开发过程中不能决定采用哪个具体日志实现的情况,因为 JCL 的特性保证了不用修改代码即可以完成底层日志实现的更换。但实际开发中,需要更换底层日志实现的情况较少,且采用 JCL 所引入的开发成本并未产生新的日志特性,因此选用 JCL 之前建议仔细评估。

3) Java Logging APIs 具有和 Apache Log4j 类似的功能,但不及后者成熟,日志特性也没有后者丰富,所以,应用场景也不如后者广泛。

4) Apache Excalibur LogKit 与另外几种日志实现的最大区别在于其可以输出多项日志信息,而不仅仅是输出一行日志信息,从而便于将日志输出直接插入到数据库中。





回页首


IBM Workplace 应用程序开发中的日志管理

完善的日志管理是开发良好的 IBM Workplace 应用程序中必不可少的一部分,上述四种常见的日志实现并不完全适合 IBM Workplace 应用程序开发的需要。为此,IBM Workplace 中定义了一套基于 JRas 的日志框架。

1) JRas 日志实现

RAS 表示可靠性、可用性和适用性(Reliability、Availability、Serviceability)。JRas 提供了一组 Java APIs,用以产生跟踪(trace)和通知(message)日志信息,便于开发和管理人员进行系统调试和管理。JRas 由 IBM 开发、发布和维护。作为一个基本的日志工具包,JRas 并不绑定于特定的产品或平台,但其仅提供原语级的日志功能,所以需要进行扩展。

2) JRas Extensions 日志实现

通过实现 JRas 中的接口,JRas Extensions 提供了和 WebSphere Application Server 的集成,以满足 J2EE 环境下对日志的需求。JRas Extensions 日志实现包含在 ras.jar 文件中,随 WAS、WSAD、RAD 等产品发布,并由 IBM 提供支持。有关 JRas Extensions 的更多信息,请参阅 IBM developerWorks文章:从 JRas 起步: 把跟踪日志记录和消息日志记录添加到 WebSphere

3) IBM Workplace 日志框架

IBM Workplace 日志框架基于 JRas Extensions 构建,具体实现在 <Workplace_Home>\lwp_ext 目录下的 lwp.commoninfrautil.jar 和 lwp.commonprotoutil.jar 文件中,包含在 com.ibm.workplace.util.logging 包中。IBM Workplace 日志框架除了提供基于 JRas Extensions 的日志实现外,同时提供了基于 Log4j 的日志实现,方便用户的选择。

相对其它常用的日志实现,IBM Workplace 的 JRas 日志框架具有更多的优点,其调用简单直观,日志功能和特性更为丰富,与 WAS 无缝集成,支持 J2EE 应用环境,并且内嵌的支持国际化扩展。读者可以通过开发实践详细体验这些优点。

IBM Workplace 应用程序开发中引入 IBM Workplace JRas 日志框架的步骤如下:

1) 编写具体的日志管理类

一般的说,实际开发中,不同的业务逻辑模块对应有不同的具体日志管理类,其代码也可加入相应的业务逻辑模块类中。本例中,具体日志管理类的目的是提供日志类的实例。类代码实例如图 1 所示。


图1 日志管理类实例
package JRaslogging;
            import com.ibm.workplace.util.logging.Log;
            import com.ibm.workplace.util.logging.LogMgr;
            public class JRasLoggingLogger{
            private static LogMgr _logger =
            Log.get(JRasLoggingLogger.class);
            private JRasLoggingLogger(){
            }
            public static final LogMgr get(){
            return _logger;
            }
            }
            

2) 调用该日志管理类

在业务逻辑类中调用图1中定义的具体日志管理类,如图2所示。


图2 调用日志管理类
package JRaslogging;
            import com.ibm.workplace.util.logging.LogMgr;
            public class logicexample{
            private LogMgr _log = JRasLoggingLogger.get();
            ……
            }
            

3) 输出日志信息

输出不同级别的日志信息,如图3所示。


图3 日志信息输出
String s = …;
            _log.traceDebug("example action = " + s);
            _log.info("info.success.action", "Security", new Object[] {
            s
            });
            _log.error("err.action.list", "Security", new Object[] {
            s, exampleException.getMessage()
            });
            

不难看出,和其它的日志实现类似,JRas 日志框架定义了包括 TraceDebug、Info、Warn、Error、Fatal 在内的多个级别的日志信息,并且吸收了 LogKit 的优点,可以输出多项日志信息条目。同时,从图3中的例子也可看出,通过 properties 文件的方式,JRas 日志框架还可方便快捷的提供国际化支持。





回页首


IBM Workplace 应用程序日志配置与分析

开发 IBM Workplace 应用程序时,可以开启日志跟踪选项。WebSphere Portal 提供了两种日志记录功能:消息的日志记录和调试信息的日志记录(即trace)。要使用 WebSphere Portal 日志记录设施来记录日志信息,可将需要跟踪的 WebSphere Portal 组件或 IBM Workplace 应用程序的完全限定类名(full qualified package name)赋值给 traceString。在 Workplace 应用程序开发中,可以通过修改 <WebSphere_Portal_Home>\shared\app\config\log.properties 文件中的 traceString 值而开启/停止对具体组件的一定范畴的日志信息跟踪,如图4所示。


图4 开启/停止调试信息
traceString = org.apache.struts.*=all=enabled:
            com.ibm.wps.portlets.struts.*=all=enabled:
            com.ibm.wps.struts.common.*=all=enabled:
            com.ibm.wps.struts.base.*=all=enabled:
            com.ibm.workplace.app.mailarchive.*=all=enabled
            

traceString 属性可以指定多个组件的完全限定类名,各类名之间以冒号分开。参数all表明记录所有范畴的日志信息,参数 enabled 表明开启日志信息跟踪。

在 IBM Workplace 应用程序开发中,了解不同的 traceString 对应 WebSphere Portal 的哪些具体的组件和错误,将给开发人员和管理人员查看日志文件提供相当大的帮助。traceString 对应 WebSphere Portal 的具体组件和错误信息如表1所示。有关 traceString 对应错误的更多信息,请访问 IBM developerWorks 文章:Troubleshooting IBM Workplace Services Express







回页首


IBM Workplace 应用程序日志性能

从消耗系统资源和响应时间两个角度来衡量,在 IBM Workplace 应用程序中加入基于 JRas 的日志框架模块对应用程序的运行并不会带来明显的性能影响。随日志信息输出目的地的不同,消耗的系统资源和响应时间会有一定的差别,但一般情况下都不会影响用户的正常体验。例如,基于JRas的日志框架模块输出日志信息的时间几乎等于采用 System.out.println() 所花费的时间,平均在数 us 至数十 us 之间。读者可通过构建实验自行验证,本文不作进一步的讨论。





回页首


小结

IBM Workplace 是功能强大的企业级协作应用平台,是构建在 IBM 中间件产品之上的协作特性和服务的集合,通过为用户提供高性能、基于角色的工作环境,从而大大提高用户的工作效率。本文介绍了目前常见的几种日志实现,详细阐述了如何基于 JRas 日志框架在 IBM Workplace 应用程序中添加完善有效的日志管理功能,最后描述了如何在 IBM Workplace 应用程序中进行日志配置和分析。有关 IBM Workplace 和日志管理的更多信息请参考本文的参考资料。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有