赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

有效地记录日志可以简化企业的开发过程 (1)

发布时间:2006.03.12 01:39     来源:IBM Developer    作者:ITZealot

在企业级的开发过程中,我们不可避免地会碰到很多问题;如果您希望在开发过程的后期能够有效地捕捉 bug,那就需要一种有效的日志策略。但是在一个企业的应用程序中要想实现有效地记录日志,需要进行一番规划,并设计一些准则。在本文中,顾问 Charles Chan 将向您介绍一些最好的实践,从而帮助您从项目一开始就编写有用的日志代码。

如果您是一名开发人员,那您很可能就已经具有这种经验:您已经开发了一些代码以及一些测试用例。应用程序经过了严格的 QA 测试,您确信代码可以完全适合业务的需求。然而,在将应用程序最终交付终端用户的手里时,却会出现一些预想不到的问题。如果没有适当的日志消息,可能需要花费几天的时间来诊断这些问题。不幸的是,大部分项目对于日志都没有一个清晰的策略。如果没有这种策略,系统产生的日志消息就有可能无益于问题的分析和解决。在本文中,我们将讨论企业应用程序日志的各个方面的问题。您将看到一个 Java™ 平台上日志 API 的概述,学习一些最好的编写日志代码的实践,并了解如果需要在产品环境中对详细日志重新进行排序,应该如何处理。

选择日志 API

在使用 Java 平台进行开发时,可以使用两个主要的日志 API:Apache Log4J 和 Java Logging API,在 1.4 及更高版本的 Java 平台中都提供了这两个 API。与 Java Logging API 相比,Log4J 更加成熟,特性也更加丰富。这两个日志的实现都采用了一个类似的设计模式(如图 1 所示)。除非您的公司限制要使用第三方的库,否则我强烈建议使用 Log4J。如果您不能决定使用哪个 API,就可以使用 Apache Commons Logging API,它对底层的日志实现进行了封装。从理论上来说,这样不用修改代码就可以进行日志实现的切换。然而,实际上您很少会切换日志的实现;因此,我不建议使用 Apache Commons Logging API,因为它的复杂性并不没有给您带来其他特性。


日志概述

Log4J 和 Java Logging API 都采用了类似的设计和使用模式(如图 1 和清单 1 所示)。消息首先被创建,然后传递给一个具有特定优先权的日志对象。这些消息的目的和格式是由输出处理程序及其布局所决定。



清单 1. 日志对象的实例化和使用

import org.apache.log4j.Logger;

public class MyClass {
  /*
   * Obtain a logger for a message category. In this case, the message category is
   * the fully qualified class name of MyClass.
   */
  private static final Logger logger = Logger.getLogger(MyClass.class.getName());
  ...
  public void myMethod() {
    ...
    if (logger.isDebugEnabled()) {
      logger.debug("Executing with parameters: " + param1 + ":" + param2);
    }
  }
}




一个好的日志实现中提供了很多不同的输出处理程序,最常见的文件输出处理程序和终端输出处理程序。Log4J 还提供了一些处理程序将消息发布到一个 JMS 主题中,或者将消息插入一个数据库表中。尽管这编写一个定制的附加器并不困难,但是编写和维护这种代码的总体成本不应低估。消息的格式可以通过 Layout 对象进行配置。最常见的 layout 对象是 PatternLayout,它根据所提供的模式对消息进行格式化。

1 2 3 4 5 6 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· [J2EE学习笔记01]配置标准的J2EE开发环境 (02-12) · 表现层框架Struts/Tapestry/JSF比较 (03-09)
· J2EE可以不需要应用服务器么? (03-09) · 专题:J2EE解决之道 (03-08)
· 改善Java企业级应用的可用性 (02-27) · J2EE探索 有状态网络的J2EE技术 (02-20)
· 基于J2EE架构的模拟考试系统 (02-15) · 基于J2EE架构的模拟考试系统 (02-15)
· 利用J2EE部署CRM BEA和Siebel共推SOA (02-15) · J2EE WEB-Tomcat5.5.9中文问题解决方案 (02-15)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 中小企业发展缓慢 电子商务存在的问题多
· 马云追加20亿投资淘宝 图谋电子商务霸主
· 国产ITIL运维先行者 四大厂商角力BI市场
· 企业信息安全解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统