了解Java日志系统框架的设计与实现

发表于:2010-5-05 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  2.2日志记录部分的设计

  如前文所述,日志记录部分负责接收日志系统客户端发送来的日志消息、日志对象的管理等工作。下面详细描述了日志记录部分的设计要点:

  1)日志记录器的管理

  系统通过保持多个Logger对象的方式来进行日志记录的分类。每一个Logger对象代表一类日志分类。因此,Logger对象的名称属性是其唯一标识,通过名称属性获取一个Logger对象:

LoggerLoggerlogger=Logger.getLogger(“LoggerName”);

  一般的,使用类名来作为日志记录器的名称,这样做的好处在于能够尽量减少日志记录器命名之间的冲突(因为Java类使用包名),同时能够将日志记录分类得尽可能的精细。因此,假定有一UserManager类需要使用日志服务,则更一般的使用方式为:

LoggerLoggerlogger=Logger.getLogger(UserManager.class);

  2)日志分级的实现

  按照日志目的不同,将日志的级别由低到高分成五个级别:

  ◆DEBUG-表示输出的日志为一个调试信息;
  ◆INFO-表示输出的日志是一个系统提示;
  ◆WARN-表示输出的日志是一个警告信息;
  ◆ERROR-表示输出的日志是一个系统错误;
  ◆FATAL-表示输出的日志是一个导致系统崩溃严重错误。

  这些日志级别定义在LoggerLevel接口中,被日志记录器Logger在内部使用。而对于日志系统客户端则可使用Logger类接口对直接调用并输出这些级别的日志,Logger的这些接口描述如下:

publicvoiddebug(Stringmsg);//输出调试信息
publicvoidinfo(Stringmsg);//输出系统提示
publicvoidwarn(Stringmsg);//输出警告信息
publicvoidfatal(Stringmsg);//输出系统错误
publicvoiderror(Stringmsg);//输出严重错误

  通过对Logger对象上这些接口的调用,直接为日志信息赋予了级别属性,这样为后继的按照不同级别进行输出的工作奠定了基础。

  3)日志对象信息的获取

  日志对象上包含了一条日志所具备的所有信息。通常这些信息包括:输出日志的时间、Java类、类成员方法、所在行号、日志体、日志级别等等。在JDK1.4中可以通过在方法中抛出并且捕获住一个异常,则在捕捉到的异常对象中已经由JVM自动填充好了系统调用的堆栈,在JDK1.4中则可以使用java.lang.StackTraceElement获取到每一个堆栈项的基本信息,通过对日志客户端输出日志方法调用层数的推算,则可以比较容易的获取到StackTraceElement对象,从而获取到输出日志时的Java类、类成员方法、所在行号等信息。在JDK1.3或者更早的版本中,相应的工作则必须通过将异常的堆栈信息输出到字符串中,并分析该字符串格式得到。

43/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号